[英]How can I copy an entire JavaScript object to update a MongoDB/Mongoose document, that contains nested arrays and subdocuments?
我有一個看起來像這樣的模式(最小化/適應問題):
const grandchild = new mongoose.Schema({
bar: String
}
const child = new mongoose.Schema({
foo: Number,
children: [grandchild]
});
const parent = new mongoose.Schema({
baz: String,
children: [child]
}
const Parent = mongoose.model("Parent", parent);
並且我需要更新現有的Parent
級(本質上是替換/復制整個對象)給定一個 JavaScript object 從一個快速put
請求正文,它准確地反映了 mongoose 模式:
{
baz: "Baz",
children: [
{
foo: 50,
children: [
{
bar: "abc"
},
{
bar: "xyz"
}
]
},
{
foo: 20
},
]
}
我需要更新一個文檔,然后發回更新的版本。
我試過這樣做(鑒於我知道父文檔的 ID):
app.put("/update", (req, res) => {
const updated = Parent.findOneAndUpdate({_id: id}, req.body, {new: true});
// (I do convert to something sendable via express, but omitted here as irrelevant
res.json(updated)
}
這似乎正確地復制了parent
文檔和child
文檔,但是子文檔數組中的孫對象沒有被復制過來,我得到的結果是缺少每個child
子文檔的子 object:
{
baz: "Baz",
children: [
{
foo: 50,
},
{
foo: 20
},
]
}
那么我怎樣才能基本上深度復制整個javascript object 來更新mongoose文檔呢?
所以事實證明我在模式 model 中有一個拼寫錯誤,所以它沒有正確更新它。
現在可以了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.