1
это мое бронирование схематолчок массив объектов в MongoDB используя мангуст
const mongoose = require('mongoose')
const schema = mongoose.Schema;
let booking = {
statusNumber: { type: Number },
service: {
hair: {
avaliable: { type: Number },
accepted: { type: Number },
acceptedBy: [{
artistId: { type: String },
noOfServices: { type: Number }
}]
},
makeUp: {
avaliable: { type: Number },
accepted: { type: Number },
acceptedBy: [{
artistId: { type: String },
noOfServices: { type: Number }
}]
},
}
}
module.exports = mongoose.model('booking', booking)
Я пытаюсь обновить свой заказ, используя ниже код
const acceptBooking = {
method: "POST",
path: "/artist/acceptBooking",
handler: (req, res) => {
console.log(req.payload)
services.booking.get({ _id: req.payload.bookingId }, (err, result) => {
if (err || result.lenght == 0) {
res("error")
} else {
let hairAcceptedBy = {
artistId: req.payload.techId,
noOfServices: req.payload.hair
}
let makeUpAcceptedBy = {
artistId: req.payload.techId,
noOfServices: req.payload.makeUp
}
console.log(hairAcceptedBy)
console.log(makeUpAcceptedBy)
let updateObject = {
service: {
hair: {
avaliable: result[0].service.hair.avaliable - req.payload.hair,
accepted: (result[0].service.hair.accepted == undefined ? 0 : result[0].service.hair.accepted) + req.payload.hair,
$push:{acceptedBy: hairAcceptedBy}
},
makeUp: {
avaliable: result[0].service.makeUp.avaliable - req.payload.makeUp,
accepted: (result[0].service.makeUp.accepted == undefined ? 0 : result[0].service.makeUp.accepted) + req.payload.makeUp,
$push:{acceptedBy: makeUpAcceptedBy}
}
}
}
services.booking.update({ _id: req.payload.bookingId }, updateObject, (err, affected, result) => {
console.log("AFFECTED>>>>>", affected)
console.log("RESULT>>>>>", result);
res("booking done")
})
}
})
и моя функция обновления выглядит
exports.update = (data, updateData, callback) => {
console.log('mongo log for update function', data)
modelUser.update(data, updateData, callback);
}
моя функция обновления работает и обновляется доступная и принятая, но не толкает ать в acceptedBy массив
я попытался это, но не работает –
вы можете обратиться по этой ссылке http://stackoverflow.com/questions/15621970/pushing- object-in-array-schema-in-mongoose, который я попробовал отсюда и работает для меня. –
Не работает Я думаю, что основная проблема заключается в том, что я нажимаю 2 массива в одном запросе. –