Создаю как бы онлайн-сервис быстрого питания для заказа еды (я просто практикую). Сейчас меня беспокоит то, что я успешно создал заказ, когда покупатель выбирает еду. После того, как выбрано другое блюдо, заказ обновляется с помощью order.id, и другое блюдо добавляется в тот же заказ с использованием $ pu sh. Проблема, с которой я сталкиваюсь, заключается в том, что когда заказ создается в первый раз, первое блюдо перезаписывается findbyIdAndUpdate при добавлении второго блюда. После добавления третьего приема пищи я получаю данные о втором и третьем приеме пищи, но первого не существует. Я использую MongoDB. Может кто-нибудь сказать мне, как это исправить?
Извините за журнал и, вероятно, неправильный код заранее!
Схема заказа здесь:
var mongoose = require("mongoose");
var orderSchema = new mongoose.Schema({
order: [{
meal: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Menu'
},
quantity: String
}],
user: {
type: mongoose.Schema.Types.ObjectId,
ref: "User",
}
});
module.exports = mongoose.model("Order", orderSchema);
Express route находится здесь:
app.post("/menu/order", middlewareObject.isLoggedin, function (req, res) {
let order = {
user: req.user._id,
meal: req.body.foodID,
quantity: req.body.quantity,
}
if (app.locals.orderID !== undefined) {
order._id = app.locals.orderID;
console.log(order._id);
Order.findByIdAndUpdate(order._id, {
$push: {
order: {
meal: order.meal,
quantity: order.quantity,
}
}
}, function (err, updated) {
if (err) {
console.log(err);
} else {
console.log("UPDATED!")
res.redirect("back");
}
})
} else {
Order.create(order, function (err, newOrder) {
if (err) {
console.log(err)
} else {
console.log("CREATED!")
app.locals.orderID = newOrder._id;
res.redirect("back");
}
})
}
})
Данные Create ():
{ "_id" : ObjectId("5eb6b78bd336a7324c63621c"), "user" : ObjectId("5eb6b788d336a7324c63621a"), "order" : [ ], "__v" : 0 }
Данные FindByUpdateandID:
{ "_id" : ObjectId("5eb6ba776d8684455cb8ece5"), "user" : ObjectId("5eb6b788d336a7324c63621a"), "order" : [ { "_id" : ObjectId("5eb6ba7d6d8684455cb8ece6"), "meal" : ObjectId("5eb6ba6a6d8684455cb8ecd7"), "quantity" : "5" }, { "_id" : ObjectId("5eb6ba7f6d8684455cb8ece7"), "meal" : ObjectId("5eb6ba6a6d8684455cb8ecd8"), "quantity" : "2" } ], "__v" : 0 }