findOne在服务器上返回undefined
这是我在服务器上的代码:
Meteor.publish('currentRequest', function (requestId) { console.log('from publish'); console.log(requestId) // The id is printed successfully console.log(Requests.findOne({_id: requestId})) // returns undefined return Requests.findOne({_id: requestId}); });
项目ID被打印,但.findOne()
似乎不工作,因为它返回undefined
。
我在这里做错了什么?
您的问题的答案将是:因为没有文件满足您的search查询。
据文件记载 :
按sorting和跳过选项sorting,查找与select器匹配的第一个文档。 如果未find匹配的文档,则返回
undefined
。相当于使用
options.limit = 1
find(selector, options).fetch()[0]
。
另外,正如@GaëtanRouziès所指出的那样,这个出版物将不起作用,因为.findOne
返回document / undefined
而不是光标。
.findOne()以asynchronous方式返回响应。 你需要传递一个callback函数findOne并在callback函数中使用return语句。 请看下面的示例代码。
CollectionName.findOne({ query : query }, function(err, resp) { if (err) { throw err; } else { return resp; } });