簡體   English   中英

Node.js-擴展命令無法按預期工作

[英]Nodejs - extend command doesn't work as expected

我遇到了一種奇怪的情況,我一直在使用擴展庫和下划線的_.extend命令,方法如下:

var extended = extend({}, objA, objB);

我僅從結果中的一個對象獲得屬性,關於擴展的任何事情可能會阻止它從兩個對象獲取所有屬性?

我在所有地方都使用過這種模式,到目前為止,它似乎可以正常工作。 兩者都是普通對象,而不是數組或函數。

編輯 :我試圖做一個演示,但它似乎與jQuery和下划線一起使用-http: //jsfiddle.net/x4UHQ/2/

在進行演示時(從我打印在日志中的對象開始),我注意到一個問題,當在console.log打印時,它不是以字符串形式出現的-它是ObjectId的貓鼬類型,也許是某種原因引起的問題? (該特定字段存在於輸出對象中,所以我不知道)

更新:這是解決方案-UnderscoreJS不會擴展對象 (向貓鼬查詢添加一個精簡選項-因為這某種程度上使對象與下划線不兼容。

很抱歉收到新的回復,它更適合作為Madd0g回復的注釋(但我並沒有要求獲得聲譽點)。

沒錯,這是貓鼬對象的錯, {lean: true}是一個修復它的選項,其他選項正在調用mongooseObj.field.toJSON() -在某些情況下,它是更方便的方法。 例如,如果您在控制器中有用戶對象(來自auth中間件),並且需要轉換某些字段,則無需從db重新獲取模型。

因此,問題在於對象之一是貓鼬庫中的對象,它使擴展命令中斷,解決方法是使用lean選項從貓鼬中獲取db對象。

類似於personModel.find({fname: "Joe"}, null, { lean: true })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM