如何将一个文档从集合发布到客户端?

时间:2017-09-18 17:52:22

标签: javascript node.js meteor

当我尝试使用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数组

1 个答案:

答案 0 :(得分:2)

删除fetch()

这会将光标从find()转换为数组,Meteor.Publish不喜欢并在您的错误消息中抱怨。