流星助手错误

时间:2014-04-02 04:10:09

标签: javascript node.js meteor

我定义了一个简单的帮手:

ccFees: function(){
  var event = Events.findOne(this._id);
  return event
}

返回对象:[object Object]

但是当我添加一个存在的属性时,就像这样:

ccFees: function(){
  var event = Events.findOne(this._id);
  return event.cost
}

......错误。

Exception from Deps recompute function: TypeError: Cannot read property 'cost' of undefined

奇怪的是,信息在第一次渲染时显示为预期,但是如果我在初始创建之后修改对象,那么它就会出错。任何帮助,将不胜感激。这是一项超常规的任务,但它是一次轰炸。这可能与Blaze有关吗?

1 个答案:

答案 0 :(得分:2)

该属性确实存在,但不存在该对象。客户端上的数据库调用仅返回已通过订阅通道提取的内容,因此在从服务器提取对象之前,findOne方法可以返回null。我不确定为什么在您的情况下这会在更新后发生,但这是一般的想法。

修复很简单:添加一个安全措施来检查您正在处理的对象是否存在:

ccFees: function() {
  var event = Events.findOne(this._id);
  if(!event) return '';
  return event.cost;
},

在这种简单的情况下,你可以用简短的形式写出来:

ccFees: function() {
  var event = Events.findOne(this._id);
  return event && event.cost;
},