这与mongoose find()操作的结果有关。代码
console.log('apparently this is an ' + typeof campaign.advertGroups, campaign.advertGroups);
导致以下输出:
apparently this is an object [ { adverts: [ [Object], [Object], [Object] ] } ]
campaign.advertGroups
不像数组一样(即长度属性未定义等等),即使它是Mongo集合中的数组。
有人可以对此有所了解吗?感觉很愚蠢,我必须错过一些非常明显的东西。
答案 0 :(得分:2)
javascript的一个奇怪的行为是typeof []
是一个对象。你有多种方法可以检查对象是不是一个数组。
其中一个是:
if(Array === someobj.constructor)
{
console.log('Its an array');
}
答案 1 :(得分:0)
@jamen,但它不像数组,因为我无法访问length属性,或通过campaign.advertGroups [0](undefined)或类似访问元素。这基本上就是我遇到的真正问题。
它看起来像一个奇怪的数组。我不确定问题究竟是什么,但您可以尝试调用height
将其转换为真实数组:
.slice
答案 2 :(得分:0)
已解决:这是我的Mongoose模式的一个问题,特别是将数组定义为具有嵌套对象的对象。 Javascript的数组技术实际上是糖衣涂层对象混淆了这个问题,导致console.log和typeof呈现看似相互冲突的信息;感谢评论者提供的那一块拼图!