Я пытаюсь обновить коллекцию MongoDb
, в которой есть массив документа с именем items
. Для этой цели я использую фреймворки express
и mongoose
.
Вот как выглядит мой schema
:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
let invoices = new Schema({
vendor: { type: String },
invoiceDate: { type: Date, default: Date.now },
expectedDate: { type: Date, default: Date.now },
billingAddress: { type: String },
contactPerson: { type: String },
items: [
{
itemID: Schema.Types.ObjectId,
qty: { type: Number },
unitPrice: { type: Number },
linePrice: { type: Number }
}
],
totalPrice: { type: Number }
});
module.exports = mongoose.model("invoices", invoices);
Я хочу обновить определенный документ на сначала найдите идентификатор этого конкретного документа, а затем обновите items
соответственно.
Это то, что я пытался до сих пор, и я не знаю, куда идти дальше при обновлении items
, которыйявляется массивом.
//end-point-4
Routes.route('/update/:id').post((req, res) => {
invoicesDB.findById(req.params.id, (err, invoice) => {
if(!invoice){
res.status(404).send('Not found!');
}else{
invoice.vendor = req.body.vendor;
invoice.invoiceDate = req.body.invoiceDate;
invoice.expectedDate = req.body.expectedDate;
invoice.billingAddress = req.body.billingAddress;
invoice.contactPerson = req.body.contactPerson;
//how to update items
invoice.items = req.body.items; //this I guess, gives the answer but not sure.
invoice.totalPrice = req.body.totalPrice;
}
});
});
PS: я не хочу обновлять определенный элемент в items
. Я хочу обновить каждый элемент в массиве с заданным значением.
В качестве примера, скажем, пользователь хочет обновить только конкретный элемент в items
, поэтому должен обновляться только этот конкретный элемент.