關(guān)于mongoose返回的數(shù)據(jù)無法修改的原因以及解決方法

我們在使用Mongoose的時候,或許大家都會發(fā)現(xiàn)回調(diào)返回的result無法進(jìn)行修改,Google了一下,現(xiàn)把方法記錄下來供有需要的同學(xué)參考一下。

代碼我就不貼了,能遇到這個問題的人說明對mongoose語法都是有一定了解的了,那么下面就直接說這種現(xiàn)象的原因。

實際上mongoose返回的數(shù)據(jù)并不是object,雖然通過typeof判斷類型是Object,但其實mongoose自己封裝的一個對象,并且這個對象會對數(shù)據(jù)進(jìn)行實時查詢以保證其符合預(yù)定義的model,而無論添加刪除model都不會改變,所以設(shè)置無效。

那解決的方法是:

在返回的result對象調(diào)用toObject()toJSON()方法,則可以對它進(jìn)行修改。

注意:

本質(zhì)上使用toObjecttoJSON都是可以的,其實這兩個方法一般來說是沒區(qū)別的,而如果要講究區(qū)別的話,那就是如果使用toJSON的話,對生成的對象用JSON.stringify,此時用的是這個對象本身的toJSON方法來序列化,而不是原生對象Object的方法。

參考英文:

From the MDN document, if an object has the toJSON property as a function, JSON.stringify will use the toJSON function to serialize the object instead of the object itself.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容