使用以下代码:
req.Course.find({}).populate('students', 'username firstName lastName registered').populate('teacher', 'image mID firstName lastName').sort({title: 1}).exec(function(err, courses){
if(err) throw err;
req.toJade.courses = [];
if (courses){
req.toJade.courses = advs;
}
res.render('courses/list', req.toJade);
});
courses
是以下格式的对象数组:
[{
_id: objectid,
title: 'History',
teacher:
{
_id: objectid,
name: 'John Smith',
etc...
},
etc...
},
etc...
]
我在 Jade 中循环遍历这些对象的数组,当我尝试访问任何老师的属性时
for c in courses:
h1= c.title
small= c.teacher.name
它返回一个错误,它无法读取未定义的属性“名称”。当我尝试访问类(class)对象的任何其他属性时,就会发生这种情况。
但是,使用
for c in courses:
h1= c.title
small= c.teacher
打印出整个明确定义的对象及其所有存在的属性和正确的值。
我哪里做错了,我怎样才能访问教师对象的任何属性?
最佳答案
只有当我们访问某个特定对象时,java 脚本才会检查其属性是否存在。因为它不像C#、Java那样是类型化语言。在 java 脚本中,我们可以动态添加或删除属性。
要检查对象中是否存在属性,我们可以使用适用于 javascript 中所有对象的函数。
objectname.hasOwnProperty("propertyToCheck")
关于javascript - 为什么仅当我尝试访问其属性之一时,对象才声称已定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31333902/