Node.js 从Mongoose模型中查找本机驱动程序未返回游标
我正试图通过MongooseNode.js 从Mongoose模型中查找本机驱动程序未返回游标,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正试图通过Mongoose模型的集合属性执行本机MongoDB查找查询。我没有提供回调,因此我希望find返回游标对象,但它返回未定义。根据,正在使用的驱动程序可以通过YourModel.collection访问,如果我切换到纯使用本机驱动程序代码find会返回一个光标,因此我不知道发生了什么 下面是重现问题的代码片段: var db = mongoose.connect('localhost', 'test'); var userSchema = new Schema({ usern
模型的集合
属性执行本机MongoDB查找
查询。我没有提供回调,因此我希望find返回游标
对象,但它返回未定义
。根据,正在使用的驱动程序可以通过YourModel.collection
访问,如果我切换到纯使用本机驱动程序代码find
会返回一个光标
,因此我不知道发生了什么
下面是重现问题的代码片段:
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
我尝试使用节点检查器进入代码,但它不允许我这样做。知道我做错了什么吗?本机驱动程序方法都被代理在nextTick上运行,因此不会返回来自驱动程序的返回值
相反,您可以传递回调,返回的第二个参数是游标
User.collection.find({}, function (err, cursor) {
//
});
好奇你为什么要绕过猫鼬?啊,这就解释了。谢谢,亚伦。这样做的动机只是性能测试期间的一些实验。当它没有像我预期的那样工作时,我似乎无法让它离开,直到我明白发生了什么。对于任何发现这一点并且不确定如何处理它的人来说,绕过像这样的mongoose并使用本机驱动程序将返回一个游标,如果你想使用它,那么你需要将其转换为一个数组(比如res.json(doc)或其他)... User.collection.find({},函数(err,cursor){cursor.toArray(函数(err,doc){//do stuff with doc});});