node.js中的未定义错误,但console.log在同一行上工作

时间:2016-10-14 19:59:41

标签: javascript node.js asynchronous callback undefined

我是node.js的新手,这是我的情况,我使用async运行3个函数,然后获取结果并尝试渲染使用把手的页面。我收到错误:

"avatar":data.avatar,

它表示数据未定义,但如果我console.log(data.avatar)数据被打印,但它会在同一行console.log处引发错误

  

TypeError:无法读取属性' avatar'为null

现在疯狂的是,如果我发表评论"tweets": tweets或者我没有使用"推文"在车把页面中的字段,它没有任何错误!

app.get('/user/:user', isLoggedIn, function(req, res, next){
var username = req.params.user;

var data = {};
var tweets = {};

async.series([
    function(callback){
        Tweet.find({ $or : [{"username":username}, {"retweeted_by":username}] }).sort({"created_at":-1}).exec(function(err, posts){
            if (err) res.redirect('/');

            tweets = posts;
            callback();
        });
    }, 
    function(callback){
         User.findOne({"username":username}).exec(function(err, user){
            if (err) res.redirect('/');

            data = user;
            callback();
         });
    },
    function(callback){
        User.findOne({ $and: [{"username":req.user.username}, {"follows": {"username":username}}] }).exec(function(err, foll){
            if (foll){
                if (foll.follows.length > 0)
                    data.do_we_follow = true;
            }

            callback();
        });
    }
], function(err, results){

    console.log(data.avatar);
       return  res.render('user', {
                "user":username, 
                "avatar":data.avatar,
                "cover":data.cover,  
                "numOfPosts":tweets.length, 
                "numOfFollowing":data.numOfFollowing,  
                "following":data.do_we_follow, 
                "username":req.user.username, 
                "myavatar":req.user.avatar, 
                "tweets": tweets
            });  
});

0 个答案:

没有答案