7

我正在尝试通过Mongoosefind的属性执行本机 MongoDB 查询。我没有提供回调,所以我希望 find 返回一个对象,但它会返回。根据Mongoose docs,正在使用的驱动程序可以通过访问,如果我切换到纯粹使用本机驱动程序代码确实会返回 a所以我无法弄清楚发生了什么。collectionModelCursorundefinedYourModel.collectionfindCursor

这是重现该问题的代码片段:

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 进入代码,但它不允许我这样做。知道我做错了什么吗?

4

1 回答 1

11

本机驱动程序方法都被代理在 nextTick 上运行,因此不会返回来自驱动程序的返回值。

相反,您可以传递一个回调,返回的第二个参数是光标。

User.collection.find({}, function (err, cursor) {
  // 
});

好奇为什么你需要绕过猫鼬?

于 2012-05-14T22:18:00.117 回答