显示 404 找不到“蛞蝓”模板,当发布返回空光标 - 流星 - 铁路由器

Display 404 not found template for 'slugs' when publication returns empty cursor - Meteor - iron-router

本文关键字:返回 光标 流星 路由器 布返回 蛞蝓 找不到 模板 显示      更新时间:2023-09-26

我的问题与这个问题有关,因为我有同样的问题。如果我有这样的路线:

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 页面将被呈现(这很好),但进度条挂在 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聊天是否存在吗?

您忘记将发布设置为就绪

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
}
});