我正在使用 Sails 和 React 开发一个 Web 应用程序。在此,我注册用户并将其重定向到主页,并将 id 作为参数传递。因此,重定向后,UserController 的
home 操作将被调用。
这里是代码“api/controller/UserController”
home : function(req,res){
var userId = parseInt(req.params.id);
sails.log.warn('Home req.params.id :: ',userId);
if(userId && typeof userId === "number"){
User.findOne(userId)
.then(function(user){
sails.log.info('Sending user [home]:: ',user);
Router.run(routes, '/user/home/' + userId, function(Root){
return res.view("homepage",{
'body' : React.renderToString(<Root/>),
'user' : user
});
});
}).catch(function(err){
sails.log.error('Error while finding user :: ',err);
return res.negotiate(err);
})
}else{
return res.badRequest("User id must be a Integer value","400");
}
}
我应该怎么做,才能使用我的 React 组件显示用户信息?
最佳答案
在处理表单提交的 Controller 操作中,您应该将用户的 ID 存储在 session 中,例如:
req.session.me = newlyCreatedUser.id;
// Session is saved automatically when request is sent.
return res.redirect('/');
这意味着您的新用户也已有效“登录”。
然后在您的 home
Controller 操作中,不要从参数中获取用户的 ID,而是从 session 中获取它。
有关更彻底的演练,请参阅 sails101/basic-login 。祝你好运!
Side note: As a rule of thumb, I would suggest using an AJAX request + loading spinner + client-side redirect (
window.location='/'
) to submit your forms instead of a traditional HTML form submission + backendres.redirect()
where possible. It tends to keep things cleaner for your app down the road, and helps encourage your backend to organically develop in a future-friendly way. Plus I just tend to think it's easier to reason about.
关于node.js - Sails-React : Receive data on programmatic redirection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33265743/