Estoy tratando de ejecutar una consulta nativa de MongoDB find
a través de la collection
propiedad de un Mongoose Model
. No estoy proporcionando una devolución de llamada, así que espero que el resultado devuelva un objeto Cursor
, pero en su lugar devuelve undefined
. De acuerdo con el Mongoose docs, se puede acceder al controlador que se está utilizando a través del YourModel.collection
y si cambio al código de controlador nativo find
devuelve un Cursor
por lo que no puedo entender qué está pasando.Native driver find from Mongoose model not returning Cursor
He aquí un fragmento de código que reproduce el problema:
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
he tratado de entrar en el código con el nodo-inspector, pero no me está dejando. ¿Alguna idea de lo que estoy haciendo mal?
Ah, bueno eso lo explica. Gracias, Aaron. La motivación para hacerlo fue solo experimentar durante las pruebas de rendimiento. Y cuando no funcionó como esperaba, no pude dejarlo pasar hasta que entendí lo que estaba pasando. – JohnnyHK
Para cualquier persona que encuentre esto y no esté seguro de qué hacer con él, eludir una mangosta como esta y usar el controlador nativo devolverá un cursor, que luego deberá convertir en una matriz si desea usarlo (como res.json (doc) o lo que sea) ... User.collection.find ({}, la función (err, cursor) { cursor.toArray (function (err, doc) {// hacer cosas con doc }) ; }); –