我正在尝试做这样的事情:
Industry.findOne({_id: id}).exec(function(err, industry){
industry.stats = _.extend(industry.stats, stats); //.......(1)
industry.save(function(err) {
// nothing is saved
});
});
(1)中的industry.log的console.log是
[{ stat_id: 545080c8e4e88b1d5a7a6d1b}{ stat_id: 54526ca6b294096d33ca6b36 }]
这不起作用,显然行业.stats不是一个对象数组,并且错过了两个对象之间的逗号。 (我正确地说明了这一点吗?)
如果我像这样直接分配industry.stats
[{stat_id: 545080c8e4e88b1d5a7a6d1b}, {stat_id: 54526ca6b294096d33ca6b36}]
然后它正在运作。是否需要先将(1)转换为对象数组?我尝试了lean()和toObject()等等,但我没有运气。我错过了什么吗?
答案 0 :(得分:1)
Lodash extend
会将源对象的自身可枚举属性分配给目标对象。在这种情况下,源(stats
)的数组属性将复制到industry.stats
。这不适用于数组。
您必须通过数组函数(push
,pull
,...)更新数组或直接设置字段。