node.js - res.redirect 不是 Promise 中的函数

标签 node.js express redirect es6-promise

我使用 Node v8.11.1 和 Express 4.16.3 以及 postgresql 作为数据库,因此我使用 pg 模块。我对 promise 还很陌生。这是我应该可以工作的代码

路线

 router.post('/save',
(req, res)=>{
  req.checkBody('email', 'put email').notEmpty().trim();
  let errors = req.validationErrors();
  if (errors) {
    req.session.msgs = errors;
    res.redirect('/signup');
   }
   else {
     var user = {email:req.body.email};
     signup.signup(user)
     .then((res)=>{           
       req.session.msgs = [{msg: res}];
       res.redirect('/events');
       },
       (rej)=>{
         res.redirect('/signup');
         req.session.msgs = [{msg: 'err'}];
       }
     )
     .catch((err)=>{
       res.redirect('/signup');
       req.session.msgs = [{msg: 'err'}];
     });
   }
});

函数

const signup = (user) => {
  return new Promise((res, rej)=>{
    pool.connect( //connect to db
      (err, client, done) => {
        if (err) {
          return rej(err); //rej
        }
        client.query('insert into user (email) values($1)',[user.email]);
        done();
        res(user.email);
      }// pool anonumous funct
    );//pool connect
  })//promise
};
exports.signup = signup;

所以,我想这应该可以立即工作,但我在这部分中收到 err TypeError: res.redirect is not a function 引用我的路线

     signup.signup(user)
     .then((res)=>{           
       req.session.msgs = [{msg: res}];
       res.redirect('/events'); // <= REFERS HERE
       },

我错过了什么?为什么这不是一个函数?如何解决这个问题?谢谢

最佳答案

您在 then 回调中使用 res,该回调会隐藏 router.post 中的 res

因此您需要重命名其中一个。

关于node.js - res.redirect 不是 Promise 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50427032/

相关文章:

node.js - Sails Node 包未更新

node.js - 数组内部数组的架构?

javascript - 意外 token = 用于 Node 8.4 中的类属性

.htaccess - 如何重定向 URL 中带有问号的旧页面?

c# - 当我从 HTTP 重定向到 HTTPS 时,用户必须重新登录

php - 如何将用户从 URL 重定向到页面 404

node.js - 在命令提示符中安装 node.js 模块以供全局使用

node.js - Sails - 捕获导致服务器崩溃的全局适配器错误

Node.js + Express : rewrite url path

node.js - 如何在 express 服务器内进行外部 API 调用?