[英]Map function on object and get keys and values Javascript
[英]Mongoose object :javascript map function not working on adding new keys
我正在嘗試從貓鼬查詢返回的JSON數組上添加新密鑰
find({chatBotId:req.params.chatBotId}).
populate('userPlan').
.exec(function(err,result){
result.map(function(e){
e.transactionObject =null
e.taxAmount = 100;
return e;
});
})
我要添加一個新的鍵taxAmount
但它不會出現在數組中,但是, transactionObject=null
可以正常工作,它是一個現有的鍵
對我result = JSON.parse(JSON.stringify(result))
是執行result = JSON.parse(JSON.stringify(result))
或執行以下操作:
result = result.map(function (e) {
e = e.toJSON(); // toJSON() here.
e.transactionObject = null;
e.taxAmount = 100;
return e;
});
甚至更好地使用lean()
( https://mongoosejs.com/docs/api.html#query_Query-lean ):
Model.find().lean()
引用Array.prototype.map()
上的MDN頁面 (重點是我的):
map()
方法創建一個新數組
您的密碼
result.map(function(e){
e.transactionObject =null
e.taxAmount = 100;
return e;
});
實際上什么也沒做。
如果要使用上面.map
的輸出,則必須重新分配它:
arrayWithNewKeys = result.map(function (e) {
e.transactionObject = null
e.taxAmount = 100;
return e;
});
如果以后使用result
,並期望它具有新的鍵transactionObject
和taxAmount
,則可以重新分配result
而無需更改以后的代碼:
result = result.map(function (e) {
e.transactionObject = null
e.taxAmount = 100;
return e;
});
您應該使用lean()
來防止貓鼬使文檔水化 。 同樣map()
函數獲取並返回一個數組。 因此,我認為最好使用forEach()
獲得結果。
results = Document.find({chatBotId:req.params.chatBotId})
.populate('userPlan')
.lean()
.exec(function(err,results){
results.forEach(function(e){
e.transactionObject = null
e.taxAmount = 100
});
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.