我正在尝试通过Mongoose模型的集合属性执行本机MongoDB查找查询.我没有提供回调,所以我希望find返回一个Cursor对象,但它返回undefined.根据
Mongoose docs,正在使用的驱动程序可以通过YourModel.collection访问,如果我切换到纯粹使用本机驱动程序代码,find会返回一个Cursor,所以我无法弄清楚发生了什么.
这是一个重现问题的代码片段:
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
我试图通过node-inspector进入代码,但它并没有让我这么做.知道我做错了什么吗?
解决方法
本机驱动程序方法都代理在nextTick上运行,因此不返回驱动程序的返回值.
相反,您可以传递回调,返回的第二个arg是游标.
User.collection.find({},function (err,cursor) { // });
好奇为什么你需要绕过猫鼬?