Meteor订阅和发布不返回数据

时间:2014-10-09 11:14:40

标签: meteor iron-router

我的Meteor应用程序中有以下酒吧,并且在我的铁路由器中,但是对于数据功能我没有得到任何回报,如果我将我的发布更改为主题而不是公共主题,那么它'很好。但这可能是正确的,因为那时有两次相同的发布,我得到一个关于它的流星消息。不确定我做错了什么。

我想根据网址

设置一组公共主题
Meteor.publish('topics' , function() {
    return Topics.find({$or:[{userId: this.userId},{collaboratorsIds: this.userId},{inviteeId:this.userId}]});
});


Meteor.publish('publicTopics' , function(permalinkUser,permalink) {
    return Topics.find({$and:[{permalinkUser: this.permalinkUser},{permalink: this.permalink}]});
});

在我的铁路由器中我有以下

this.route('topicPublic', {
        path: 'public/:permalinkUser/:permalink',
        layoutTemplate: 'layoutApp',
        waitOn: function(){
            return [Meteor.subscribe('publicTopics', this.params.permalinkUser,this.params.permalink)]
        },


        data: function(){
            return Topics.findOne({$and:[{permalinkUser: this.params.permalinkUser},{permalink: this.params.permalink}]});

        }
    });

2 个答案:

答案 0 :(得分:0)

您的publicTopics发布功能有误。如果您将参数传递给函数,则不要在函数内使用this.permalinkUser,而只需使用permalinkUser。详细了解w3schools上的功能。

Meteor.publish('publicTopics' , function(permalinkUser,permalink) {
  return Topics.find({$and:[{permalinkUser: permalinkUser},{permalink: permalink}]});
});

在您的主题发布功能中,您使用this.userId,因为它是Meteor对象的属性。

答案 1 :(得分:0)

需要删除“this” - 我的错误是没注意我从路由器数据函数复制了返回。