Я пытаюсь обновить схему моего парикмахера, а точнее один объект из моего массива служб.
const hairdresserSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
email: { type: String, required: true },
password: { type: String, required: true },
label: { type: String, required: true },
description: { type: String, required: true },
stripe: { type: String, required: false },
phone: { type: String, required: true },
address: { type: String, required: true },
services: [
{
_id: { type: mongoose.Schema.Types.ObjectId },
label: { type: String },
service: [{ type: mongoose.Schema.Types.ObjectId, ref: "category" }],
price: { type: Number },
supplement: { type: Number },
duration: { type: Number }
}
]
});
const workerSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
label: { type: String, required: true },
entity: { type: mongoose.Schema.Types.ObjectId, required: true, ref: "hairdresser" },
description: { type: String, required: true },
availability: [
{
id: { type: mongoose.Schema.Types.ObjectId, required: false },
date: { type: Date, required: false },
stops: [
{
stop: { type: String },
booked: { type: Boolean }
}
]
}
],
required: false
});
Я пытался использовать $ set и $ notation для нацеливания на нужный объект, но Mon go постоянно говорит мне, что невозможно создать свойство.
worker.update(
{
'availability.stops._id': req.body.basicID
},
{
$set: {
'availability.stops.$.booked': true,
}
}
)
Вот пример моей рабочей схемы в формате JSON:
{ _id: 5e4d6adbb12e8b5ccbb87d94,
label: 'Germain',
entity: 5e3d39fb0b40f96f98d33c1a,
description: 'Je prendrai soin de vos cheveux',
availability:
[ { stops: [{ _id: 5e4d6adbsdfds2e8b5ccbb87d75, stop: "10:00", booked: false }, { _id: 5e4d6adbsdfds2sdfd8b5ccbb87d75, stop: "10:15", booked: false }],
_id: 5e5edfd15605520adb7af977,
date: 2020-03-03T23:00:00.000Z },
{ stops: [{ _id: 5e4d6adbb12e8b5ccbb87d92, stop: "08:00", booked: false }, { _id: 5e4d6adbb12e8b5ccbb87d75, stop: "08:15", booked: false }],
_id: 5e5edfe05605520adb7af988,
date: 2020-03-03T23:00:00.000Z } ],
__v: 0 } ]
}
Мне нужно обновить Any идея как заставить это работать?