#node.js #mongodb #express #mongoose
Вопрос:
У меня есть функция контроллера, которая успешно обновляет мои документы групп с помощью массива контактов, за исключением того, что она перезаписывает старый контакт, если я добавляю другой в базу данных, поэтому в моем документе может быть не более 1 контакта одновременно. Есть ли способ просто добавить новый контакт при обновлении, а не заменять существующий контакт?
Вот моя функция контроллера
const createContact = async (req, res) => {
const { phone_number, country, phone_type, group, firstName, lastName, company, email} = req.body
// we have success gotten group._id and made it into an object
const newContact = new Contact({
//[ // group array of objects
// {
// contacts: [],
// _id: '60d2d43345f1de1135185efe',
// title: 'vacant',
// created: '2021-07-27T19:40:01.600Z'
// },
// {
// contacts: [],
// _id: '60ff432fa2f369134d838e3c',
// title: 'yellow belts',
// created: '2021-07-26T23:20:15.933Z'
// }
//]
phone_number: phone_number,
country: country,
group: group, // this group coming in is an array of objects, each object has array of contacts
phone_type: phone_type,
firstName: firstName,
lastName: lastName,
company: company,
email: email,
_user: req.user.id
})
const createdContact = await newContact.save() // I now have acces to this objectId
console.log(createdContact._id) // we need to push this into each groups contact array
const GroupId = group.map(groups => groups._id)
const ChosenGroups = await (await Group.updateMany({ '_id': { $in: GroupId}}, {$set: {contacts : createdContact._id}}));
console.log(ChosenGroups)
res.status(201).json(createdContact)
}```
Комментарии:
1. Вы пробовали использовать
$push
?2. это сработало, Джо, спасибо за твой ответ. Я новичок в mongo db и не знал, что есть оператор push! Я запишу вам ответ и отправлю ответ