Я публикую этот вопрос в отношении моего варианта использования .
Это правда, что есть много ответов на ту же тему, но Я не нашел ответа.
, поэтому я прошу вас о помощи. Спасибо.
Я бы хотел обновить lineItemStatus внутри lineItems массив.
Вот моя модель:
const orderSchema = new Schema(
lineItems: [{
lineItemStatus: {
type: String,
default: 'en waiting for validation',
lowercase: true
}
}]
)
Результат выглядит следующим образом
{
"_id": "5c659cd0be79c124126d5ec2",
"lineItems": [{
"lineItemStatus": "waiting for validation", //the status to update
"_id": "1"
},
{
"lineItemStatus": "delivered",
"_id": "2"
}
]
}
Сначала я могу получитьодин элемент lineItems.это код
async updateStatus(req, res) {
let givenLineItemId = req.body.lineItemId
let givenlineItemStatus = req.body.status // the status to update
try {
const ObjectId = mongoose.Types.ObjectId
const aggregationStages = [
{
$unwind: '$lineItems'
},
{
$match: {
'lineItems._id': ObjectId(givenLineItemId)
}
}
]
await Order
.aggregate(aggregationStages)
.exec(function(err, orders) {
if (err) res.status(400).send(err)
res.status(200).send(orders)
})
} catch (err) {
return res.status(500).send(err)
}
}
Но сейчас я не могу обновить lineItemStatus. Я вижу способ использовать set или pus h, но он не работает.
Большое спасибо за помощь.