У моего основного объекта в моей БД есть свойство, представляющее собой массив из 7 элементов (дней).В каждом дне есть еще один массив ресторанов.
Я изо всех сил стараюсь $ push данных в массиве конкретного дня.
В моей БД я хочу, чтобы структура данных выглядела так
restaurants_cook_for: [
{
monday: [{
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
},
{
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
}]
},
{
tuesday: [{
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
}]
}
]
В моем файле API есть вещи, похожие на это, но.Кажется, я не могу заставить его публиковать данные в массиве в понедельник или вторник и т. Д.
const query = { userid: req.body.userid };
const rest_name = req.body.rest_name;
const day_or_night = req.body.day_or_night;
const dayOfWeek = req.body.day_of_week;
const arrayFilters = { arrayFilters: [{ dayOfWeek: 0 }], upsert: true};
const update = {
$push: {
"restaurants_cook_for.$[dayOfWeek]": [{
rest_name: rest_name,
is_night_or_day_shift: day_or_night,
turn_off_event: false
}]
}
};
ChefProfile.update(query, update, arrayFilters, (err, raw) => {
if (err) throw err;
if (raw) {
console.log('SUCCESS: ' + JSON.stringify(raw));
console.log("1 document updated");
res.sendStatus(200);
}
});
Файл моей модели сейчас немного уродлив, поскольку я пытаюсь также выяснить способ передачи переменной dayOfWeek исделать это динамичным.В настоящее время я полагаюсь на «strict: false» для этого.
const schemaOptions = {
collection: "chefs",
strict: false
};
const ChefProfile = new mongoose.Schema({
restaurants_cook_for: [{
}]
}, schemaOptions);
Когда я возиться, я либо не получу ошибок, но ничего не было добавлено, ИЛИ я получу целый новый объект понедельника, когда я действительно простохотел добавить ресторан к списку понедельников.
Я чувствую, что ухожу отсюда.Любая помощь или толчок в правильном направлении будет удивительным!