[英]Creating new mongoose sub-doc and appending to existing parent doc
我正在使用 NodeJS、MongoDB、Express、Mongoose 等構建一個帶有數據庫的網站。
我從某個地方獲取(並調整)了以下代碼,所以這就是我所在的位置...
exports.addCategories = catchAsync(async (req, res, next) => {
const categories = req.body;
const length = categories.length;
const eventID = categories[length - 1].eventId;
categories.pop();
Event.findOne({ _id: eventID }, (err, event) => {
if (err) return res.status(400).send(err);
if (!event)
return res.status(400).send(new Error("Could not find that event"));
Category.create(categories, (err, category) => {
if (err) return res.status(400).send(err);
event.categories.push(category._id);
event.save((err) => {
if (err) return res.status(400).send(err);
res.status(200).json(category);
});
});
});
});
目前 mongoose 調試輸出顯示以下內容(這證實了它的大部分工作正常,但 ID 沒有被正確拉出):
> Mongoose: events.updateOne({ _id: ObjectId("614bc221bc067e62e0790875")}, { '$push': { categories: { '$each': [ undefined ] } }, '$inc': { __v: 1 }}, { session: undefined })
沒關系! 我意識到“類別”仍然是一個數組,而不是我假設的類別數組的一個元素。
所以我用這個替換了那個部分,現在......它起作用了!
Category.create(categories, (err, categories) => {
if (err) return res.status(400).send(err);
categories.forEach((category) => {
event.categories.push(category._id);
});
event.save((err) => {
if (err) return res.status(400).send(err);
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.