node.js - Sails-React : Receive data on programmatic redirection

标签 node.js reactjs sails.js

我正在使用 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 + backend res.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/

相关文章:

javascript - Node JS 请求以字符串形式返回

node.js - Node.js 上的 Geddy MVC 单元测试框架

node.js - Sails js 渲染局部 View

node.js - 在 Windows Azure 中开发 Node.js 应用程序的可移植性和灵活性注意事项?

mysql - 如何使用 Express 访问 get 请求的结果(对象)?

javascript - 在 ReactJS 中操作类名和处理点击的更好方法

javascript - reactJS 和读取文本文件

javascript - react 钩子(Hook)形式 : How to can I use onChange on React Hook Form Version 7. 0

node.js - SailsJS 水线与 bluebird promise

用于 https 通信的 IOS 和 Android 可信证书颁发机构