这很奇怪......我正在使用带有 ref 的 populate() 来填充我的模式中的一个数组,但是这些属性是不可访问的。换句话说,架构是这样的:
new Model('User',{
'name': String,
'installations': [ {type: String, ref: 'Installations'} ],
'count': Number,
}
当然,Insallations 是另一种模式。
然后我找到并填充一组用户......
model.find({count: 0}).populate('installations').exec( function(e, d){
for(var k in d)
{
var user = d[k];
for(var i in user.installations)
{
console.log(user.installations[i]);
}
}
} );
到目前为止,一切都很好!我看到打印出来的数据很好,如下所示:
{ runs: 49,
hardware: 'macbookpro10,1/x86_64',
mode: 'debug',
version: '0.1' }
但是,如果我尝试实际访问这些属性中的任何一个,它们都是未定义的!例如,如果我添加另一个控制台日志:
console.log(user.installations[i].mode);
然后我看到这个日志打印了“未定义”。如果我尝试对对象进行操作,如下所示:
Object.keys(user.installations[i]).forEach(function(key) { } );
然后我得到一个典型的“[TypeError: Object.keys called on non-object]”错误,表明 user.installations[i] 不是对象(即使它被输出到控制台就好像它是一样)。所以,我什至尝试了一些丑陋的东西,比如......
var install = JSON.parse(JSON.stringify(user.installations[i]));
console.log(install, install.mode);
而且,第一个输出(安装)是一个很好的对象,包含属性“模式”......但第二个输出是未定义的。
是什么赋予了?