Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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 为什么当前用户没有数据?_Javascript_Node.js_Express_Parse Platform - Fatal编程技术网

Javascript 为什么当前用户没有数据?

Javascript 为什么当前用户没有数据?,javascript,node.js,express,parse-platform,Javascript,Node.js,Express,Parse Platform,我试图检索当前用户会话,然后将数据发送到视图,但在视图中没有显示我检查数据库的事件,并且有一个包含所有信息的活动会话。我尝试注销用户并重新开始。这是我的密码 登录效果很好 router.post('/', jsonParser, function (req, res) { if (!req.body || req.body.length === 0) { console.log('request body not found'); return res.s

我试图检索当前用户会话,然后将数据发送到视图,但在视图中没有显示我检查数据库的事件,并且有一个包含所有信息的活动会话。我尝试注销用户并重新开始。这是我的密码

登录效果很好

router.post('/', jsonParser, function (req, res) {
    if (!req.body || req.body.length === 0) {
        console.log('request body not found');
        return res.sendStatus(400);
    }

var username = req.body.username;
var password = req.body.password;

Parse.User.logIn(username, password, {
    success: function (user) {

        res.redirect('/');
        console.log(JSON.stringify(user));
    },
    error: function (user, error) {

    }
});
});
在index.js中检索当前用户

var username;
/* GET home page. */
router.get('/', function (req, res, next) {
    var currentUser = Parse.User.current();
    if (currentUser){
        currentUser.fetch().then(function (fetchedUser) {
            this.username = fetchedUser.getUsername();
        }, function (error) {
            console.log(error.message);
        });
    }
    res.render('index', {title: 'Home', user: this.username});
});

module.exports = router;

当我试图显示用户名
h1=user
时,没有显示任何内容。

不确定您是否获得了
此项的值。用户名

/* GET home page. */
router.get('/', function (req, res, next) {
    var currentUser = Parse.User.current();
    var that = this;
    if (currentUser){
        currentUser.fetch().then(function (fetchedUser) {
            that.username = fetchedUser.getUsername();
        }, function (error) {
            console.log(error.message);
        });
    }
    res.render('index', {title: 'Home', user: that.username});
});

module.exports = router;

存储此的引用,然后尝试使用
res显示它。render

您可以使用箭头函数访问外部上下文(
):

但是,它无法帮助您,因为您试图在获取用户之前渲染。提取完成时,您需要等待

if (currentUser) {
  currentUser.fetch().then(function(fetchedUser) {
    res.render('index', {title: 'Home', user: fetchedUser.getUsername()});
  }).catch(function(err) {
    console.error(err);
    // may be render something with err.message here
  });
} else {
  // render without user
  res.render('index', {title: 'Home', user: null});
}

我不明白检查新代码编辑是否是你的意思。我在获取用户之前尝试了渲染,没有任何更改,上面的代码产生了500个错误。我上次编辑是在你写评论之后,你能确认你使用了实际的答案代码吗?阅读
catch
部分中的注释。服务器必须在这里做出响应。而且,我的答案不仅仅是正确的代码。这更多的是指向你的错误。仍然是一样的,而且箭头显示了IDE中的错误(Webstorm 2016)。这些是代码更改<代码>路由器.get('/',函数(req,res,next){if(currentUser){currentUser.fetch().then(fetchedUser=>{res.render('index',{title:'Home',user:fetchedUser.getUsername()});}.catch(err=>{console.error(err);//可能在此处呈现带有err.message的内容);}其他{//render不带用户res.render('index',{title:'Home',user:'user not available“});}}});节点版本5.6我不知道您使用的是什么节点版本。将代码更新为常用函数。
if (currentUser) {
  currentUser.fetch().then(function(fetchedUser) {
    res.render('index', {title: 'Home', user: fetchedUser.getUsername()});
  }).catch(function(err) {
    console.error(err);
    // may be render something with err.message here
  });
} else {
  // render without user
  res.render('index', {title: 'Home', user: null});
}