JS: Запуск Array.every () для проверки параметров запроса API. Возвращение ложного - PullRequest
0 голосов
/ 11 апреля 2020

Попытка проверить, может ли быть обновлен параметр запроса API . ['age"]

Итак, я проверяю массив значений .

Значение продолжает возвращаться false

У меня console.log ()

  • params
  • массив свойств
  • Результат проверки параметров по массиву свойств



    router.patch('/users/:id', async (req, res) => {

    const updates = Object.keys(req.body);
    const properties = ['name', 'age', 'email', 'password'];

    console.log(updates)
    console.log(properties)

    const validateUpdate = updates.every((item) => {
        properties.includes(item);
    });
    console.log(validateUpdate);
    try {
        if (!validateUpdate) {
            console.log(`Property not eligible for update: ${validateUpdate}`);
            return res.status(400).send('Property not eligible for update');

        }
        const updateUser = await User.findByIdAndUpdate(req.params.id, req.body, {
            useFindAndModify: false,
            new: true,
            runValidators: true
        });
        res.status(200).send("update" + updateUser);
    } catch (error) {
        res.status(400).send(error)
    }

});

enter image description here

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Отсутствует инструкция возврата:

const validateUpdate = updates.every((item) => {
  properties.includes(item);
});

Правильно:

const validateUpdate = updates.every((item) => properties.includes(item));
1 голос
/ 11 апреля 2020

Вы забыли вернуться в обратном вызове every, поэтому обратный вызов всегда возвращает undefined, и это переводится в ложное значение.

Чтобы исправить это, просто верните оператор includes или удалите скобки {}.

const validateUpdate = updates.every((item) => {
    return properties.includes(item);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...