当我尝试使用find()
时,如下所示:
Meteor.publish('currentRequest', function (requestId) {
console.log(requestId)
console.log( Requests.find( {_id: new Meteor.Collection.ObjectID(requestId)} ).fetch() ); // The item is printed successfully to the terminal
return Requests.find( {_id: new Meteor.Collection.ObjectID(requestId)} ).fetch();
});
以下是我在客户端订阅的方式:
Template.requestView.onCreated(function () {
var self = this;
self.autorun(function() {
self.subscribe('currentRequest', Session.get('requestId'));
});
});
这是我的帮手:
Template.requestView.helpers({
currentRequest: function() {
console.log(Requests.findOne(new Meteor.Collection.ObjectID(Session.get('requestId'))) );
return Requests.find( {_id: new Meteor.Collection.ObjectID(requestId)} ).fetch();
}
});
但是我收到以下错误:
sub currentRequest id的异常m9X5fgYNNtLN6JAXt错误:发布 函数返回一个非游标数组
当我尝试将上述所有代码从find()
更改为findOne()
时,如下所示
Requests.findOne(new Meteor.Collection.ObjectID(requestId));
我收到以下错误:
sub currentRequest id的异常vqjwt7sggLESxeNtc错误:发布 function只能返回Cursor或Cursors数组
答案 0 :(得分:2)
删除fetch()
。
这会将光标从find()
转换为数组,Meteor.Publish
不喜欢并在您的错误消息中抱怨。