2013-10-22 59 views
0

我想使用下划线合并2个对象。目标对象是一个猫鼬模型,但我已经应用lean()来使它返回一个javascript对象而不是mongo文档。UnderscoreJS不会扩展对象

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 
} 

之前的任何人碰到这个来或不知道我哪里错了?

+0

为了澄清,我可以手动操作从猫鼬手工返回的数据,但我宁愿合并对象,而不愿手工操作。 –

+0

_id需要是一个字符串。例如_id:'526540eaa77883d815000029'。否则它应该是一个有效的数字,如5265400029 ... –

+0

上述对象仅来自console.log,_id是猫鼬对象 –

回答

0

嗯,我很愚蠢。源对象是从文件顶部的另一个猫鼬查询获得的,这个是mongoose.Document的一个实例,因此无法更改。我为它添加了lean()以使它返回一个JavaScript对象,现在它全部工作。