meteor - 在助手中查找之前如何确保我的订阅已准备好?

标签 meteor

我希望做一些非常简单的事情,即将数据库中的字段值转换为助手中的变量。该文档如下所示:

{
  hero: "Simon Belmont",
  universe: "Castlevania",
  items: ["Whip", "Cross", "Oak Stake"]
}

在助手中,我想做类似的事情:

var selectedHeroId = Session.get('whichHeroSelected')
var heroItems = Heroes.findOne({_id: selectedHero}).items

然而,事实证明这非常变化无常。有时它会提示 items 未定义。奇怪的是,当我命名变量 items 时它起作用,但当我命名它 heroItemsitemsArray 时它不起作用。

因此,我正在寻找一种方法来确保在数据库中查找内容之前已订阅Heroes。顺便说一句,我在 Iron Router 的 waitOn 函数中订阅了它。

最佳答案

听起来你只需要一个 guard :

Template.myTemplate.helpers({
  items: function() {
    var selectedHero = Heroes.findOne(Session.get('whichHeroSelected'));
    return selectedHero && selectedHero.items;
  }
});

关于meteor - 在助手中查找之前如何确保我的订阅已准备好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30310584/

相关文章:

meteor - Meteor 中的路由 ≥ 1.0

mongodb - Meteor + Mongodb : is there a way to fully exclude some subdocuments from db. find() 的结果?

javascript - 向 meteor 中的用户集合添加字段的正确方法

javascript - 我怎样才能用 meteor 链接动态导入?

javascript - 使用 Meteor publish-with-relations 包,其中每个连接不能使用 _id 字段

javascript - meteor 随机取色器

Meteor 自定义包中的 CoffeeScript 命名空间导出

javascript - 尝试订阅时出现意外 token

meteor - 无法让公用文件夹在 meteor 0.3.7 中工作

meteor - Meteor.js 中如何设置 html/body 标签属性?