【问题标题】:Meteor Publish Returning Empty CursorMeteor Publish 返回空光标
【发布时间】:2013-03-08 20:46:27
【问题描述】:

我正在使用 Backbone.js 来路由配置文件视图,以便我可以查看属于 /user 的数据,并且该部分工作正常。我能够根据用户名生成一个 _id 并将其传递给服务器发布函数,该函数将其记录下来。但是,当我在 subscribe 函数中将结果记录回客户端时,我的结果如下所示:

对象{停止:函数,就绪:函数}

//Client Side
Template.userquery.userproject = function() {
    var query = Session.get('userquery');
    var user = Meteor.users.findOne({username: query});
    if (user) {
        console.log(user._id); //(works)
        campaigns = Meteor.subscribe('userquery', user._id, function() {
            console.log('ready'); //(works)
        });
        console.log(campaigns); //(returns Object {stop: function, ready: function})
        return campaigns;
    }
}
//Server Side
Meteor.publish('userquery', function(userid) {
    console.log('break');
    console.log(userid); //(I get userid in Terminal)
    var campaigns = Campaigns.find({owner: userid}, {fields: {owner: 1, name: 1}});
    if (campaigns) {
        console.log(campaigns);
        return campaigns;
    }
});

我在这个函数中遗漏了什么吗?我已关闭自动发布,因为它会生成我的搜索两次。

【问题讨论】:

    标签: javascript model-view-controller backbone.js meteor


    【解决方案1】:

    Meteor.subscribe, according to the docs, "返回一个提供 stop() 和 ready() 方法的句柄。所以你看到的行为是有意的。

    【讨论】:

    • Publish 不会返回游标,它会为您提供一个句柄,您可以使用它来停止或重新启动订阅。要使用数据,只需像往常一样拨打您的Campaigns.find,只要它在订阅完成后,您说“准备好”(时间上不是代码上)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多