当前位置: 首页 > 知识库问答 >
问题:

Meteor发布错误-发布函数返回了一个非游标数组

荀豪
2023-03-14

我有本出版物

Meteor.publish('temsInThisCompetition', function (id) {
var teams = [];
return Competitions.find(id).fetch().map(function (doc) {
    for(var item in doc.teams){
        teams.push(Teams.find(item));
    }
    return teams;
});
});

但我得到了这个错误

 Exception from sub temsInThisCompetition id kDPuEbc9dtWn2tfT3 Error: Publish function returned an array of non-Cursors

共有2个答案

滕翔飞
2023-03-14

由于Meteor是异步的,您的初始代码无法工作,因为团队数组是在for循环完成之前返回的。

如果您需要在异步环境中使用for循环,您可以使用回调函数,如下所示:

function getTeams(id, callback) {
    Competitions.find(id).fetch().map(function (doc) {

        var teams = [];

        for(var item in doc.teams){
            teams.push(Teams.find(item));

            if(teams.length==doc.teams.length) {
                callback(teams);
            }
        }
    });
}

Meteor.publish('temsInThisCompetition', function (id) {
    getTeams(id, function(teams) {
        return teams;
    });    
});

收集不带回调和集合的find()。findOne()是同步的,这就是为什么答案中的代码不会返回空集的原因。

韩英锐
2023-03-14

这为我解决了问题

Meteor.publish('teamsInThisCompetition', function (id) {
var competition = Competitions.findOne(id);
return Teams.find({_id:{$in:competition.teams}});
});
 类似资料:
  • 我试图发布一个集合,但我的控制台说它返回一个数组。 服务器/publish.js RelyeffTopContainer.jsx REYPHTop.jsx 我正在尝试将当前计数放入#output div,以便在所有用户屏幕上显示。

  • 我的Meteor publish出现了一些有线问题,当我找到它时,它工作正常,但使用findOne时,它不工作,使用findOne时,我得到了一个光标错误。 这是我的代码 为此,我没有定义 如果我执行以下操作 我取回了两个ID,但返回后我得到了以下错误 我NvoF9MimZ6tJ95c3mNvoF9MimZ6tJ95c3m 错误Exception from sub KLnQphHTXmQcjEi2

  • 我已经设置了一个简单的应用程序,它显示了项目列表。我已经删除了自动发布包,所以我不会将所有内容发送给客户端。 打开时,这将显示所有项目: 移除后,我还必须执行以下操作: 那么,说客户端的find()方法只搜索从服务器端发布的记录,准确吗?它一直在绊倒我,因为我觉得我应该只调用一次。

  • 我知道之前有人问过这个问题,但我还是希望有人能帮我。我使用meteorchef的基本模板。 从ScoreTotal.js在用户界面/容器目录我做: 在服务器/出版物中,我有: 当我console.log结果时,我看到聚合有效,但我得到错误“发布函数返回非光标数组” 感谢您的帮助!

  • 我真的不知道我的java代码中的错误在哪里。我必须使用REST API登录Kofax Total Agility。为此,我尝试使用postman测试我的json是否正确构建。以下是我的登录JSON: 我得到了肯定的回答: 到目前为止,一切顺利。为此,我创建了模型: 对于响应: 这些类应该允许我构建 json。现在,我创建了一个方法,用于生成请求对象并期望响应对象。 当我调用这部分代码时,我注意到我

  • 有时我的应用程序会出现这种异常: 代码创建通知: