嵌套字段"Cannot read property 'zip' of undefined"



出现此错误。你知道怎么解决吗?

Object from MongoDB:

...
"name" : true,
"address" : {
        "zip" : "BH9AXX",
        ...

对数据库的请求:

exports.getList = function (req, res, next) {
    User.find({
        user: req.user.id
    }, function (err, users) {
        if (err) return next(err);
        return res.render('list', {
            users: users
        });
    });
};

list.jade:

each user in users
    tr
      td #{user.name}
      td #{user.address.zip}

当不使用#{user.address.zip}时,一切正常工作。

user.address是未定义的(至少在某些情况下),因此尝试访问jade文件中的user.address.zip会导致错误。

可能的解决方案包括:

  • 也许地址不是数据库模式中的必需字段,或者允许未定义。

  • 您可以在调用res.render()之前添加代码,检查user.address是否未定义。如果是,则设置为默认值(例如将zip设置为空字符串的对象)。

最新更新