Meteor publish undefined或Publish函数只能返回Cursor或Cursors数组

时间:2014-12-16 22:39:56

标签: javascript meteor

我的Meteor发布有一些有线问题,当我有findOne时它可以工作,但发现它没有,并且与findOne我得到一个游标错误。

这是我的代码

Meteor.publish('organizations', function() {
    var user = Meteor.users.findOne(this.userId);
    if(!user) return '';
     var debugTest = Organizations.findOne(user.organizationId);
      console.log(debugTest._id);
    //return Organizations.findOne({_id: user.organizationId});
}); 

为此,我得到了未定义的

如果我执行以下操作

Meteor.publish('organizations', function() {
  var user = Meteor.users.findOne(this.userId);
  if(!user) return '';
  console.log(user.organizationId);
  var debugTest = Organizations.findOne(user.organizationId);
  console.log(debugTest._id);
  //return Organizations.findOne({_id: user.organizationId});
});

我回复了两个ID但是返回时我收到以下错误

是的,我 NvoF9MimZ6tJ95c3m NvoF9MimZ6tJ95c3m

错误 来自子KLnQphHTXmQcjEi2D的异常错误:发布函数只能返回Cursor或Cursors数组

2 个答案:

答案 0 :(得分:12)

findOne不会返回Mongo游标。它返回一个Mongo文档。如果您希望这样做,请尝试更改为使用return Organizations.find({_id: user.organizationId});。这将返回单个文档光标,这是发布调用所期望的。

有关详细信息,请查看docs

答案 1 :(得分:0)

所以问题是由于我的模板pub / sub工作正常但在我的模板助手中我有以下导致问题。

hasOrganization: function() {
    var user = Meteor.user();
    var organizationsCount = Organizations.find({$or:[{userId: user._id},{**userId**: user.organizationId}]}).count();
    console.log(organizationsCount);

    if (organizationsCount >= 1) {
      return true
    } else {
      return false
    }

这是固定版本

hasOrganization: function() {
    var organizationsCount = Organizations.find().count();
    if (organizationsCount >= 1) {
      return true
    } else {
      return false
    }
  }