Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法读取属性';Symbol(Symbol.iterator)和#x27;未定义的_Javascript_Arrays_Node.js_Mongoose - Fatal编程技术网

Javascript 无法读取属性';Symbol(Symbol.iterator)和#x27;未定义的

Javascript 无法读取属性';Symbol(Symbol.iterator)和#x27;未定义的,javascript,arrays,node.js,mongoose,Javascript,Arrays,Node.js,Mongoose,我试图循环一个数组,检查它是否包含任何传递指定函数的项。为此,我将.any()原型添加到数组对象: Array.prototype.any = (comparator) => { for(let item of this){ if(comparator(item)){ return true; } } return false; }; 然后调用Array.any(),如: 但是,这给了我以下错误: TypeE

我试图循环一个数组,检查它是否包含任何传递指定函数的项。为此,我将.any()原型添加到数组对象:

Array.prototype.any = (comparator) => {
    for(let item of this){
        if(comparator(item)){
            return true;
        }
    }
    return false;
};
然后调用Array.any(),如:

但是,这给了我以下错误:

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)
TypeError:无法读取未定义的属性“Symbol(Symbol.iterator)”
在Array.any(C:\dev\nodejs\testproject\dist\routes\userRoutes.js:29:39)
在C:\dev\nodejs\testproject\dist\routes\userRoutes.js:87:56
在询问时。(C:\dev\nodejs\testproject\node\u modules\mongoose\lib\model.js:3748:16)
在C:\dev\nodejs\testproject\node\u modules\kareem\index.js:277:21
在C:\dev\nodejs\testproject\node\u modules\kareem\index.js:131:16
at_combinedTickCallback(内部/流程/下一步勾选js:67:7)
在进程中。_tick回调(内部/process/next_tick.js:98:9)
在我看来,这个错误似乎表明原型函数中的“this”未定义,但“this”是我检查未定义的用户数组

我不确定是什么导致了这个问题,希望您能提供帮助。

使用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);
        }
    });
};

这里唯一的答案是你没有使用“功能”,所以你的“这”不是你的“用户”。这将有助于:

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

然后,当然,只需使用“一些”即可。

什么是“用户”?它看起来不是数组,而是来自mongoose的
查询
对象。我认为您做了类似于
var users=User.find({})
的事情。是吗?
user.userName===user.userName
:你真的是这个意思吗?你可能是对的,这里的“用户”确实来自mongooseAlso,你不能只用它吗?@IdsvanderZee请将其作为一个补充,而不是编辑你的问题-这完全使错误消息无效。
Array.prototype.any = function(comparator) {
    for(let item of this){
        if(comparator(item)){
            return true;
        }
    }
    return false;
};