У меня есть «модель продукта» и конечная точка, где пользователь запрашивает продукты. Как обычно, пользователь может отправлять поля в строке запроса для фильтрации результатов, но если пользователь отправляет поле с недопустимым типом, например слово в числовом c пути, проверка завершается неудачно и выдает ошибку CastError как ожидается.
const ProductModel = require('../models/Product');
app.get("/products", async (req, res, next) => {
// user sends {upc: "word"} when upc should be a number, therefore validation fails
const products = await ProducstModel.find(req.qury);
})
Проблема: есть ли способ проверить запрос на соответствие модели / схеме? Так что возникнет ошибка валидации. Почему я хочу это сделать? При создании документа, если проверка завершается неудачно, выдается ValidationError, в котором есть все ошибки, поэтому я могу ответить пользователю с его помощью. С другой стороны, CastError выдается при первой найденной ошибке.
ValidationError: "Product validation failed: upc: Cast to Number failed for value \"word\" at path \"upc\""
CastError: Cast to ObjectId failed for value "a" at path "width" for model "Product"