我正在定义一个简单的助手:
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
奇怪的是,信息在第一次渲染时按预期显示,但如果我在初始创建后修改对象,则会出错。任何帮助,将不胜感激。这是一个 super 例行任务,但却是轰炸。这可能与 Blaze 有关吗?
最佳答案
属性确实存在,但对象不存在。客户端上的数据库调用仅返回已通过订阅 channel 获取的内容,因此在从服务器拉出对象之前,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;
},
关于javascript - Meteor 助手出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22801389/