流星:防止 findOne() 的未定义结果
Meteor: Prevent undefined result for findOne()
我想从集合中获取一些信息 - 在本例中为用户集合;但可以是任何内容:
var result = Users.findOne({ _id: Meteor.userId() }).profile.anything;
在某些情况下,信息丢失。例如,如果数据库为空,我会得到错误Exception in template helper: TypeError: Cannot read property 'profile' of undefined
.
如果我使用 findOne
并获得未定义的结果,防止这种情况的最佳方法是什么?
我会做这样的事情:
var temp = Users.findOne({ _id: Meteor.userId() });
if (temp)
var result = temp.profile.anything;
但这看起来不是很优雅。
我在关于警卫的帖子中详细介绍了这一点。这不是 meteor 甚至 find
操作的问题——它只是 JavaScript 中的防御性编程。在可能需要警卫的情况下,普遍接受的做法是:
x && x.y && x.y.z
它涵盖了x
和y
中的一个或多个未定义的情况。
您可能会遇到长函数基于某些数据的存在的情况。在这些情况下,您可能需要执行以下操作:
user = Meteor.user();
if (!user) return;
...
// rest of function which assumes user is defined
相关文章:
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- 解析-为什么user.getSessionToken()返回未定义的结果
- Chrome扩展,Chrome.tabs.query的结果未定义
- 从JSON API结果迭代时未定义
- json-api和错误结果:无法读取属性'长度'的未定义
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- Meteor js-控制台显示'未定义'即使返回结果
- 获取结果未定义(主干.js)
- 从 Angular 数据工厂中的 HTTP POST 请求接收未定义的结果
- 离子警报 - 检查结果是否未定义
- 使用String.FromCharCode时,jQuery返回未定义的结果
- 解析JSON字符串返回未定义的结果
- Javascript:添加键值对文字,给出未定义的结果
- Javascript/Underscore赢得't跳过未定义的结果
- 为什么这个JavaScript代码的结果是“;未定义”;
- “渲染骨干模型视图”返回未定义的结果
- 流星:防止 findOne() 的未定义结果
- node.js process.env:将 process.env 属性分配给字符串类型中的未定义结果
- JSON “未定义”结果
- 打印数组时的 JavaScript 未定义结果