Не удается прочитать свойство Symbol (Symbol.iterator) из неопределенного

1

Я пытаюсь пройти через массив, чтобы проверить, содержит ли он какой-либо элемент, который передает указанную функцию. Я делаю это, добавляя прототип.any() к объекту Array:

Array.prototype.any = (comparator) => {
    for(let item of this){
        if(comparator(item)){
            return true;
        }
    }
    return false;
};

Затем вызывается Array.any() как:

else if(users && users.any((user) => user.userName === user.userName)){
        res.status(400).send('Username already in use');
}

Это, однако, приводит к следующей ошибке:

TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined
at Array.any (C:\dev\nodejs\testproject\dist\routes\userRoutes.js:29:39)
at C:\dev\nodejs\testproject\dist\routes\userRoutes.js:87:56
at Query.<anonymous> (C:\dev\nodejs\testproject\node_modules\mongoose\lib\model.js:3748:16)
at C:\dev\nodejs\testproject\node_modules\kareem\index.js:277:21
at C:\dev\nodejs\testproject\node_modules\kareem\index.js:131:16
at _combinedTickCallback (internal/process/next_tick.js:67:7)
at process._tickCallback (internal/process/next_tick.js:98:9)

Ошибка кажется мне такой, что предполагает, что "это" в функции прототипа не определено, но "это" - это массив пользователей, для которого я проверял неопределенное.

Не совсем уверен, что на самом деле вызывает проблему, надеюсь, что вы можете помочь.

Теги:
arrays
mongoose

1 ответ

0
Лучший ответ

Использование Array.prototype.any() было ненужным, поскольку я использовал mongoose, чтобы получить пользователей, поэтому я изменил его, чтобы mongoose попытался получить единственного пользователя, у которого есть разделенное имя пользователя, и проверить, было ли это определено. Подобно:

const checkUniqueUserName = (user, res, done) => {
    User.findOne({"userName": user.userName}, (err, foundUser) => {
        if(err){
            res.sendStatus(500);
            console.log(err);
        }

        else if(foundUser){
            res.status(400).send('Username already in use');
        }

        else{
            done(user);
        }
    });
};

Ещё вопросы

Сообщество Overcoder
Наверх
Меню