【问题标题】:Meteor publish undefined or Publish function can only return a Cursor or an array of CursorsMeteor 发布未定义或发布函数只能返回一个游标或游标数组
【发布时间】:2014-12-17 07:18:03
【问题描述】:

当我使用 findOne 时,我的 Meteor 发布存在一些连线问题,但使用 find 时它不起作用,使用 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

错误 来自 sub KLnQphHTXmQcjEi2D 错误的异常:发布函数只能返回一个游标或游标数组

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

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

    欲了解更多信息,请查看docs

    【讨论】:

    • 我在第一个版本的代码中有这个,但我仍然得到 undefined var debugTest = Organizations.find({_id: user.organizationId}); console.log(debugTest._id);
    • 对不起,更清楚我应该说有这个功能return Organizations.find({_id: user.organizationId});
    • 我已经返回了 Organizations.find({_id: user.organizationId});它没有返回任何 IE 未定义
    • 好的,帮我试试这个。退后一步,尝试return Organizations.find();。是否返回未定义?
    • 谢谢,您的反馈帮助我解决了问题和原因
    【解决方案2】:

    所以问题是由于我的模板,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
        }
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多