findOne在服务器上返回undefined

时间:2017-09-17 11:23:58

标签: node.js mongodb meteor

这是我在服务器上的代码:

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

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

您的问题的答案将是:因为没有满足您的搜索查询的文档。

根据documentation

  

按排序和跳过选项排序,查找与选择器匹配的第一个文档。如果找不到匹配的文档,则返回undefined

     

等同于find(selector, options).fetch()[0] options.limit = 1

另外,正如@GaëtanRouziès指出的那样,这个出版物不起作用,因为.findOne返回文件/ undefined而不是光标。

答案 1 :(得分:-1)

.findOne()以asynchronus方式返回响应。你需要将一个回调函数传递给findOne并在回调函数中使用return语句。请看下面的示例代码。

CollectionName.findOne({
     query : query
   }, function(err, resp) {
   if (err) {
     throw err;
   } else {
     return resp;
   }
});