这是我在服务器上的代码:
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
。
我在这里做错了什么?
答案 0 :(得分:2)
您的问题的答案将是:因为没有满足您的搜索查询的文档。
按排序和跳过选项排序,查找与选择器匹配的第一个文档。如果找不到匹配的文档,则返回
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;
}
});