【问题标题】:Display 404 not found template for 'slugs' when publication returns empty cursor - Meteor - iron-router当发布返回空光标时显示 404 未找到“slugs”模板 - Meteor - Iron-router
【发布时间】:2014-12-05 16:23:18
【问题描述】:

我的问题与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 not found 模板。为什么?如果聊天存在,我是否必须签入我的onBeforeAction?

【问题讨论】:

    标签: javascript meteor iron-router


    【解决方案1】:

    您忘记将发布设置为就绪

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

    【讨论】:

    • 感谢您的帮助!现在渲染了 404 not found 模板,但是你能告诉我为什么进度条永远不会结束吗?
    • 不知何故,您的订阅之一永远不会准备好。您确定服务器端没有错误吗?或者你可以给一个小的 github repo 在那里我可以检查你做了什么?
    • 我目前无法提供 github repo,但感谢您的帮助!你知道我怎么能“调试”这个吗? progressDebug 模式并没有真正的帮助:/
    • 可能会使用 ddp-analyser-proxy 检查您的 DDP 日志,或者尝试在没有 Iron-router 的情况下进行订阅,看看是 IRP 未能完成加载还是您的订阅。
    猜你喜欢
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 2015-11-20
    • 2019-03-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多