.findOne不传递结果callback

这一定是一个愚蠢的问题,但是我已经把我的头撞到墙上足够长了。

简短版本:我有一个查询,在Mongo控制台中按预期返回结果,但在通过Mongo NodeJS包使用时不返回任何结果(或错误)。

var weatherCacheQuery = { 'location': { '$near': { '$geometry': { type: 'Point', coordinates: [location.coordinates[0], location.coordinates[1]] }, '$maxDistance': 50000 } }, 'retrieved': { '$gte': moment().subtract(2, 'hours').toDate() } }; this.db.collection('weather').findOne( weatherCacheQuery, function(err, doc) { console.log(JSON.stringify(err)); console.log(JSON.stringify(doc)); } }); 

正如你所看到的,没有什么太复杂。

如果我转储查询对象并将其粘贴到Mongo控制台的findOne查询中,它将返回一个完全按照它应该看起来的结果。 在JS中,两个console.log()都返回null。

更奇怪的是,使用相同查询的find() 返回结果,但不能查看,因为JSON.stringify()会报告它是循环的。

任何人都可以指出我做错了无疑荒唐的事情吗?

用于节点的.findOne MongoDB驱动程序有三个参数,它们都不是可选的。 尝试:

 this.db.collection('weather').findOne( weatherCacheQuery, {}, function(err, doc) { console.log(JSON.stringify(err)); console.log(JSON.stringify(doc)); } }); 

你也可以用一个承诺来尝试,然后链接到.findOne ,并将callback传递给那个。

该文件还说, .findOne已被弃用和使用。

 find().limit(1).next 

你可以把callback传递给那个。