流星路由器路由属性未定义

时间:2013-05-09 04:38:56

标签: javascript meteor

我的路线设置如下:

Meteor.Router.add({
    '/:menuSlug': function(menuSlug) {
        Template.menu.items = function() { return Items.find({menuId: Menus.findOne({slug: menuSlug})._id}); }
        return 'menu';
    }
});

但是,当我浏览/ my-test-slug时,我收到此错误

Uncaught TypeError: Cannot read property '_id' of undefined

我认为这与https://stackoverflow.com/a/14107148/979315有关,但由于我没有使用Meteor.user()反应集合,因此我不确定在适当提取数据后如何重新呈现此页面。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最好从路由器代码中分离模板助手,并使用Session哈希来存储消息:

Meteor.Router.add({
    '/:menuSlug': function(menuSlug) {
        Session.set("menuslug", menuSlug);
        return 'menu';
    }
});

Template.menu.items = function() {
    var item = Menus.findOne({slug: menuSlug});
    if(item) return Items.find({menuId: item._id});
});

另一个问题可能是数据稍后发送。所以有一段时间可能没有任何数据(特别是如果你直接将URI加载到页面)。因此,您需要考虑本地集合中可能没有数据的情况。