UnderscoreJS不会扩展对象

时间:2013-10-22 12:20:26

标签: javascript node.js object mongoose underscore.js

我正在尝试使用下划线合并2个对象。目标对象是一个猫鼬模型,但我已经应用lean()使其返回一个javascript对象而不是一个mongo文档。

model.find({}).lean().exec(function (error, object) {});

然后尝试使用下划线扩展

_.extend(object, source);

但它只返回源对象。 我试过用简单的对象来测试,那些工作正常,所以我假设它与猫鼬有关?

有效的简单对象是:

{foo:'foo'},{bar:'bar'}

我试图合并但无法合并的对象是:

{
  _id: 526540eaa77883d815000029,
  name: 'House',
  description: '',
  type: 'residential',
  cost: 100,
  buildTime: 5,
  resources: { produces: [], required: { wood: 5 } },
  population: { provides: 10, required: 0 },
  requires: [],
  maxLevel: 5,
  upgrades:
   { '2': { resourceMultiplier: 1.2, cost: 150, time: 5 },
     '3': { resourceMultiplier: 1.5, cost: 200, time: 7 },
     '4': { resourceMultiplier: 2, cost: 300, time: 10 },
     '5': { resourceMultiplier: 2.5, cost: 500, time: 15 } },
  scale: { x: 1, y: 1, z: 1 } 
}


{ 
  empireId: '52654578a4eff60000000001',
  buildingId: '526540eaa77883d815000029',
  level: 1,
  isComplete: false,
  isUpgrading: false,
  gridId: '175|0|125',
  started: 1382442513823,
  _id: 526666113fccae68be000003,
  __v: 0 
}

之前有人遇到过此事或知道我哪里出错了吗?

1 个答案:

答案 0 :(得分:0)

嗯,我很蠢。源对象来自文件顶部的另一个mongoose查询,这个是mongoose.Document的一个实例,因此无法更改。我向它添加了lean()以使其返回一个javascript对象,它现在都在工作。