2013-10-22 61 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對象,現在它全部工作。