【发布时间】:2012-07-26 16:11:27
【问题描述】:
这很奇怪...我正在使用带有 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);
同样,第一个输出(安装)是一个不错的对象,包含属性“模式”...但第二个输出未定义。
什么给了?
【问题讨论】: