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