#node.js #mongodb
#node.js #mongodb
Вопрос:
Проверено много раз. Код выглядит нормально для меня, но компилятор постоянно не может скомпилироваться. Кто-нибудь может увидеть проблемы?
Я пытаюсь добавить объект обратной связи конкретного учителя в его / ее собственный массив feebacks.
структура документа:
{
studentName: 'xxx',
teachers: [
{
teacherName: 'xxx',
feedbacks: []
}
]
}
await collection.updateOne({
studentName: req.body.name,
teachers: {
$elemMatch: {
teacherName: {
$eq: 'xxx'
}
}
}
}, {
$push: {
teachers.$.feedbacks: req.body
}
});
Комментарии:
1.
teachers.$.feedbacks
необходимо заключить в одинарные / двойные кавычки"teachers.$.feedbacks"
2. помимо синтаксической ошибки, это очень плохой дизайн. Вы можете сохранить отзывы в отдельной коллекции и заполнить их. Это позволяет вам обновлять и запрашивать более чистым способом в будущем.
Ответ №1:
Вы должны использовать двойные кавычки, чтобы избежать синтаксической ошибки.
Вы должны думать, что вы программируете в node.js и объект будет прочитан Монго. Но создается с использованием синтаксиса узла.
Итак, вы можете создать объект, ключом которого являются просто буквы без двойных кавычек, но для создания ключа с $
помощью или .
вам нужно сделать с. " "
Поэтому вам нужно сделать: 'teachers.$.feedbacks': req.body