Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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 Async series在应为true时响应为false_Javascript_Node.js - Fatal编程技术网

Javascript Async series在应为true时响应为false

Javascript Async series在应为true时响应为false,javascript,node.js,Javascript,Node.js,嘿,我正在使用一个异步系列创建一个数组,其中包含在搜索结果中找到的用户,以循环查看这些用户是否是登录用户的好友请求数组的一部分。然而,由于某些原因,它总是以false结尾,有人注意到下面的代码有什么错误吗 以下是路由文件的代码: exports.searchPost = function(req, res, err) { User.find({$or:[ {firstName: req.body.firstName}, {lastName:

嘿,我正在使用一个异步系列创建一个数组,其中包含在搜索结果中找到的用户,以循环查看这些用户是否是登录用户的好友请求数组的一部分。然而,由于某些原因,它总是以false结尾,有人注意到下面的代码有什么错误吗

以下是路由文件的代码:

exports.searchPost = function(req, res, err) {
    User.find({$or:[
            {firstName: req.body.firstName},
            {lastName: req.body.lastName},
            {email: req.body.email},
            {phone: req.body.phone}]
    }, function(err, users, userAdd) {
        if(err) {

            return res.render('searchError', {title: 'Weblio'}); 
        } else {

            if(req.body.firstName=== '' && req.body.lastName==='' && req.body.email==='' && req.body.phone=== '') {
                //maybe  a diff page saying that is not a valid search page
                return res.render('searchError', {title: 'Weblio'});        
            } else {


                    var userAdd,
                    series = [];

                    console.log('addman');
                    users.forEach(function (user) {
                        series.push(function (callback) {
                            User.findById(req.signedCookies.userid, {
                                friendRequest: user._id
                            }, function () {
                                if (user._id === true) {
                                console.log('addman1');
                                return callback(null, [user, true]);
                                } else {
                                    console.log('addman2');
                                    console.log(user._id);
                                    return callback(null, [user, false]);
                                }
                            });
                        });
                    });

                async.series(series, function (err, results) {
                //results should be an in order array of values;
                console.log(results);
            return res.render('searchResults', {title: 'Weblio',         
                    userAdded: results
                });
            }); 

            }

        }
    });

};  

我认为有两个问题需要检查
if(user.\u id==true){

第一个问题是,您希望
user.\id
是一个布尔值-它可能不是。一个简单的
if(user.\id){
将检查它是否是一个“”值-除了0以外的所有数字都是


但是,我认为可能还有第二个问题:
user
变量来自
users.forEach(function(user){
-我猜您实际上想检查
user.findById(req.signedCookies.userid,{friendRequest:user.\u id}函数的结果(…
code。在这种情况下,您需要向回调函数添加
error、user2
参数或类似的内容。

顺便说一句,您可以将
forEach()
/
push()
替换为
map()
。但它会改变错误的输出吗?出于某种原因,我只是不断得到像这个User.findById这样的false user2(req.signedCookies.userid,{friendRequest:user.\id},function(user2){或者您是指将回调函数中的用户替换为user2吗?正如您所说,
function(user2){
然后
if(user2.\u id){…
getting TypeError无法为if(user2.\u id)的那一行读取null属性“\u id”{在
if
语句之前,调用
console.dir(参数)
-这应该可以告诉您正在处理什么。我认为第一个参数实际上是错误,第二个是数据。很抱歉,我会编辑我的答案。好的,我理解,这是正确的,但是第二个参数是什么,我如何调用我查询的数据?