当发布返回空光标时,显示404找不到'slugs'的模板 - Meteor - iron-router

时间:2014-12-02 10:01:30

标签: javascript meteor iron-router

我的问题与此problem有关,因为我遇到了同样的问题。如果我有这样的路线:

this.route('userPage', {
    path: '/user/:username',
    waitOn: function() { return [Meteor.subscribe('userPage', this.params.username)];
    },
    data: function() {
        return Users.findOne({username: this.params.username});
    }
});

我的订阅如下:

Meteor.publish('userPage', function(username) {
    return Users.find({username: username}, {fields: {'profile': 1, 'username': 1}});
});

将呈现404页面(这没关系),但progress-bar挂起98%左右(为什么?)。 如果我有这样的路线:

this.route('chat', {
        path: '/chat/:slug',
        waitOn: function() { return [ Meteor.subscribe('chat', this.params.slug), Meteor.subscribe('chatAvatars', this.params.slug) ]; },
        data: function() { return Chat.findOne({slug: this.params.slug}); }
    });

和我这样的订阅:

Meteor.publish('chat', function(slug) {
    return Chat.find({slug: slug});
});

Meteor.publish('chatAvatars', function(slug) {
    var chat = Chat.findOne({slug: slug});
    if (chat) {
        return Users.find({_id: {$in: chat.participants}}, {fields: {'profile.image': 1, 'username': 1}});
    } else {
        return null;
    }
});

没有找到404模板将被渲染。为什么?如果聊天存在,我是否必须登记onBeforeAction

1 个答案:

答案 0 :(得分:0)

您忘记将发布设置为就绪

Meteor.publish('chatAvatars', function(slug) {
var chat = Chat.findOne({slug: slug});
if (chat) {
    return Users.find({_id: {$in: chat.participants}}, {fields: {'profile.image': 1, 'username': 1}});
} else {
     this.ready();//<============here
}
});