Почему вы используете мангуста вы говорите?

Посмотрим правде в глаза, написание шаблонов валидации, приведения и бизнес-логики MongoDB — это муторно. Мангуст облегчает весь этот беспорядок.

Работая с mongoose специально над операцией обновления, вы заметите, что вам нужно будет предоставить селектор для документа, который вы изменяете (обычно _id или имя пользователя), вместе с полями, которые вы хотите изменить, и их соответствующими значениями, которые вы хотели бы изменить. Обновить.

Вот простой фрагмент, чтобы обобщить всю мысль выше

Пользователь.обновление({

«имя пользователя»: req.params.user} , {$set:

{возраст: req.body.age, местоположение: req.body.location, имя: req.body.name …..}

} ,

функция (ошибка, успех) {

если (ошибиться) бросить (ошибиться);

еще {

res.send({

сообщение: «обновление успешно»

})

}})

Код в порядке, если вы хотите обновить от двух до нескольких полей, но он становится довольно уродливым, поскольку поле, которое нужно обновить, увеличивается. Скажем, 100 полей. Кроме того, если вам удастся написать запрос на обновление для 100 полей, какова вероятность того, что имена свойств в схеме навсегда останутся прежними. Если схема будет обновляться, вы будете писать 100+100 = 200 обновлений.

Вот где мой код приходит на помощь. Он не только динамически заполняет поля обновления в запросе, но и извлекает имя поля из запроса.

константные записи = Object.keys(req.body)

постоянные обновления = {}

// построение динамического запроса

for (пусть i = 0; i ‹ entry.length; i++) {

обновления [записи [i]] = Object.values ​​(req.body) [i]

}

Пользователь.обновление({

«имя пользователя»: req.params.user

} , {

$set: обновления

} ,

функция (ошибка, успех) {

если (ошибиться) бросить (ошибиться);

еще {

res.send({

сообщение: «обновление успешно»

})

}

}