javascript - Meteor 助手出错

标签 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

奇怪的是,信息在第一次渲染时按预期显示,但如果我在初始创建后修改对象,则会出错。任何帮助,将不胜感激。这是一个 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/

相关文章:

javascript - onmouseover 停止幻灯片帮助

javascript - 如何在 aria true 或 false 时将 addClass 和 removeClass 添加到子元素?

javascript - 基本的 create-react-app Jest 测试解释

javascript - 迭代 JSON 对象

Meteor.Error 不显示任何内容

node.js - Firebase 查询搜索字符串中的某个单词

node.js - 流读取在nodejs中返回空

javascript - NodeJS : How do I perform an action after multiple asynchronous functions have completed?

cordova - 将 Meteor JS 应用程序编译到 Windows Phone

java - 如何在Meteor中获取Java客户端调用DDP的源ip地址