我定义了一个简单的帮手:
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有关吗?
答案 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;
},