Próbuję wykonać natywne zapytanie MongoDB find
za pośrednictwem właściwości collection
obiektu Mongoose Model
. Nie dostarczam wywołania zwrotnego, więc spodziewam się, że obiekt zwróci obiekt Cursor
, ale zamiast tego zwraca undefined
. Zgodnie z Mongoose docs, używany sterownik jest dostępny przez YourModel.collection
i jeśli przejdę do czysto przy użyciu natywnego kodu sterownika find
, zwróci on Cursor
, więc nie mogę zrozumieć, co się dzieje.Sterownik natywny znajdujący się w modelu Mongoose nie wraca Kursor
Oto fragment kodu, który reprodukuje problem:
var db = mongoose.connect('localhost', 'test');
var userSchema = new Schema({
username: String,
emailAddress: String
});
var User = mongoose.model('user', userSchema);
var cursor = User.collection.find({});
// cursor will be set to undefined
Próbowałem wejść do kodu z węzła inspektor, ale nie jest mi pozwolić. Masz pojęcie, co robię źle?
Ah, cóż, to wyjaśnia. Dzięki, Aaron. Motywacją do tego było tylko kilka eksperymentów podczas testów wydajności. A kiedy to nie zadziałało, jak się spodziewałem, nie mogłem odejść, dopóki nie zrozumiałem, co się dzieje. – JohnnyHK
Dla każdego, kto to znajdzie i nie jest pewien, co z nim zrobić, pomijanie mangusty w ten sposób i użycie natywnego sterownika zwróci kursor, który następnie trzeba przekształcić w tablicę, jeśli chcesz go użyć (np. Res.json (doc) lub co masz) ... User.collection.find ({}, funkcja (err, kursor) { cursor.toArray (funkcja (err, doc) { // robić rzeczy z doc }) ; }); –