繁体   English   中英

为什么我遇到“未定义”错误,但代码在我的Meteor模板中正常工作?

[英]Why am I getting an 'undefined' error but the code is working in my Meteor template?

我做了这个UI.registerHelper:

UI.registerHelper('addressCityName', function(id) {
    "use strict";
        return Cities.findOne({_id: id }).name
}) 

这使我可以访问“地址”集合中链接的city ID的name属性。

它可以在浏览器中工作,但是在控制台中我收到一条错误消息: Exception in template helper: TypeError: Cannot read property 'name' of undefined

如果我从UI.registerHelper返回值中删除了name属性,则错误消失了,但浏览器不再显示城市名称。

这是怎么回事,我该如何解决?

在此处输入图片说明

当您尝试使用Cities.findOne({_id: id }).name 但是您的订阅尚未在客户端准备好。 因此Cities.findOne({_id: id })是不确定的。

因此,如果您尝试获取Cities.findOne({_id: id }).name那么如果您将其可视化,输出将类似于undefined.name 因此,这就是您收到错误的原因。

要解决该问题,您可以添加一个if条件,它将解决该问题。

UI.registerHelper('addressCityName', function(id) {
    "use strict";
        if(Cities.findOne({_id: id })) {
            return Cities.findOne({_id: id }).name
        }
}) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM