[英]Deep copy of the Object to add a key : value
我正在使用mongoose
與next.js
和react-query
從數據庫中預取產品。 我想知道為什么我需要對嵌套的 object 進行深層復制才能為其添加鍵:值。 否則它不起作用。 讓我知道我不明白的地方。
await queryClient.prefetchQuery(['productSlug', slug], async () => {
const product = await read(slug);
const existingRatingObject = product.ratings.find(
(item) => item.postedBy.toString() === user._id.toString()
);
const copyProduct = JSON.parse(JSON.stringify(product));
if (existingRatingObject) {
copyProduct.star = existingRatingObject.star;
} else {
copyProduct.star = 0;
}
console.log({ copyProduct });
return JSON.stringify(copyProduct);
});
原因是獲取的產品是 Mongoose 文檔,而不是普通的舊 JavaScript object。
當您將其轉換為普通的舊 javascript Object 時,您將能夠向其添加任何密鑰。
您可以在查詢中添加.lean() 或將 toObject/toJSON 添加到獲取的文檔中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.