.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传递给那个。