我有以下代码
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发送到客户端以及如何从那里获取它。
非常感谢。
答案 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]
。