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; } });