0

我有这样的路线设置:

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() 反应性集合,我不确定如何在获取数据后重新呈现此页面适当地。有什么想法吗?

4

1 回答 1

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 直接加载到页面)。因此,您需要考虑本地集合中可能还没有数据的情况。

于 2013-05-09T06:21:29.533 回答