Есть ли понятие "защищенных" полей в findByIdAndUpdate? - PullRequest
0 голосов
/ 24 сентября 2018

Допустим, у меня есть несколько полей, которые я не хочу изменять.В моем случае мои пользователи могут использовать запрос PATCH, который вызывает этот метод:

Ad.findByIdAndUpdate(req.params.id, req.body, {new: true})

Технически я могу «вручную» отфильтровать объект «req.body» и удалить все, что не должно обновляться, даже если они специальноотправьте эти поля в запросе, но есть ли лучший способ, возможно, добавив «защищенный» флаг в соответствующую схему примерно так:

title: {
    type: String,
    required: true,
    protected: true
}

1 Ответ

0 голосов
/ 24 сентября 2018

Некоторые проблемы:

  • Не могли бы вы проверить ввод пользователя и выдать ошибки?Это все еще правильный запрос, если пользователь отправляет произвольные данные?
  • Если вы не проверяете, как вы дезинфицируете?
  • Если вы не проверяете, почему бы вам не проверить?отфильтровать запрос?

Я бы настоятельно рекомендовал выполнить проверку (например, с некоторой библиотекой json-schema) и впоследствии выполнить очистку значений.Кроме того, вы можете использовать Monogram , чтобы запретить обновление некоторых свойств.В этом случае запрос с неожиданными параметрами в полезной нагрузке выдает и возвращает некоторую ошибку (например, BAD REQUEST)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...