Express通过页面向用户发送信息

时间:2016-04-15 04:41:18

标签: javascript node.js express

我有以下代码

var user = function(req,res,next) {
db.findOne({ username: req.params.uid }, function (err, docs) {
//error handaling
if(err){console.log(err)}
//check if user is real
if(docs === null){
     res.end('404 user not found');
}else{
    //IMPORTANT PART res.sendFile(__dirname + '/frontend/user.html');
    }
});

}

app.get('/user/:uid',user);

不要担心数据库的内容。

我想知道如何将req.params.uid发送到客户端以及如何从那里获取它。

非常感谢。

2 个答案:

答案 0 :(得分:0)

根据我的评论,这只是一个更完整的答案。

如果您希望在每个请求中存储有关用户的一系列信息,那么您希望使用cookies

当用户首次向页面发出请求时,您将通过res.cookie设置Cookie。因此,在您的代码中,最终的if语句看起来像:

if(docs === null) {
    res.end('404 user not found');
} else {
    res.cookie('uid', req.params.uid, { httpOnly: true });
    //IMPORTANT PART res.sendFile(__dirname + '/frontend/user.html');
}

然后,在下一个请求和Cookie到期之前的期货请求中,您可以使用以下方式访问它:

req.cookies.uid

但是,您事先需要在应用中的某个地方使用cookie-parser中间件:

var cookieParser = require('cookie-parser');
app.use(cookieParser());

如果您需要在客户端访问uid的值,则可以使用模板,或者在使用{{1}设置时将httpOnly值设置为false }。然后,您可以使用document.cookies访问res.cookie

查看this W3Schools page以访问客户端上的Cookie。

答案 1 :(得分:0)

如果您的用户配置正确,则每个请求都会有一个用户:

'/user/

然后你的api端点只是GET

在您的客户端中,只需向此端点发出next请求(可能使用AJAX),您的响应将是发出该请求的任何用户。

注意:除非您要定义中间件,否则无需传入This is #[strong cool]