Sails-React:接收编程redirect的数据

我正在开发一个使用Sails和React的Web应用程序。 在这里,我正在注册用户,并将它们redirect到主页传递id作为参数。 所以在redirect之后, UserController's会被调用。

这里是代码'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组件显示用户信息?

在处理表单提交的控制器操作中,应该将用户的ID存储在会话中,例如:

 req.session.me = newlyCreatedUser.id; // Session is saved automatically when request is sent. return res.redirect('/'); 

这意味着你的新用户也被有效地“login”。

然后在你的home控制器动作中,而不是从参数中抓取用户的ID,从会话中抓住它。

有关更全面的演练,请参见sails101 / basic-login 。 祝你好运!

附注:作为一个经验法则,我会build议使用AJAX请求+加载微调+客户端redirect( window.location='/' )来提交您的表单, 而不是传统的HTML表单提交+后端res.redirect()在可能的地方。 它往往会让你的应用程序保持更清洁的状态,并有助于后端以对未来友好的方式进行有机的发展。 另外我只是倾向于认为这是更容易理解。