异步系列应该是假的,应该是真的

时间:2013-07-22 19:06:14

标签: javascript node.js

嘿所以我正在使用异步系列来创建一个数组,搜索结果中的用户可以循环查看它们是否是登录用户的朋友请求数组的一部分。但是,由于某种原因,它是总是最终为假,有没有人注意到下面的代码有什么问题?

以下是路径文件的代码:

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

            }

        }
    });

};  

1 个答案:

答案 0 :(得分:1)

我认为您在检查if (user._id === true) {时会遇到一些问题。

第一个问题是你期望user._id是一个布尔 - 它可能不是。一个简单的if (user._id) {将检查它是否为“truthy”值 - 除了0之外的所有数字都是。

但是,我认为可能存在第二个问题:user变量来自您的users.forEach(function (user) { - 我猜你确实想要查看User.findById(req.signedCookies.userid, {friendRequest: user._id} function(...的结果代码。在这种情况下,您需要将error, user2参数添加到回调函数或其他内容。