При попытки дополнить данные в БД, $push почему-то дублирует их в поле, т.е поле с массивом под названием dates в БД в итоге должно иметь 21 элементов массива, после отправки данных, а на деле их 42. Данные дублируются.
Код запроса к базе данных:
router.post('/set-new-activities', async (req, res) => {
const { id, activities } = req.body;
console.log(id);
console.log(activities);
await UserCalendar.findOneAndUpdate(
{ _id: new ObjectId(req.session.userId), actions: { $elemMatch: { _id: id } } },
{ $push: { 'actions.$.dates': activities } },
(err) => {
if (err) throw err;
console.log('success');
res.json('success');
},
);
});
Схема:
const { Schema, model } = require('mongoose');
const schema = new Schema({
name: {
type: String,
required: true,
},
password: {
type: String,
required: true,
},
actions: [{
name: { type: String },
days: [],
debt: { type: Boolean, default: false },
created: { type: Date, default: '2020-03-16' },
status: { type: Boolean, default: true },
dates: [{
year: { type: String },
month: { type: String },
day: { type: String },
status: { type: Boolean, default: false },
}],
}],
});
Код POST запроса к серверу:
const obj = {
id: action._id,
activities: newActivity,
};
const response = await fetch('/set-new-activities', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8',
},
body: JSON.stringify(obj),
});
if (response.ok) {
console.log('Активность обновлена');
} else {
throw new Error(Возникла проблема с fetch запросом. ${response.status});
}
Вот что в итоге получается в БД:
А это что console.log на серваке выдало:
Ошибок нет и сам объект с данными отправился один раз. Возможно, я накосячил где-то в запросе к БД. т.к только осваиваюсь в mongoose.