Express 链接多个响应以发送数据,然后重定向url

Express 链接多个响应以发送数据,然后重定向url,express,promise,sequelize.js,Express,Promise,Sequelize.js,我是javascript新手,想知道我的代码是否可以接受:我正在使用toexpress来响应PUT请求。我的目标是将更新后的Sequelize模型作为响应发送回,然后将用户重定向回本地/ 是否允许使用单独的返回语句链接两个.then()方法 我显示的代码在我的controller.js中的回调函数中 if(!errors.isEmpty()) { return res.status(404).json({ errors: errors.array() }); } else {

我是javascript新手,想知道我的代码是否可以接受:我正在使用toexpress来响应PUT请求。我的目标是将更新后的Sequelize模型作为响应发送回,然后将用户重定向回本地
/

是否允许使用单独的返回语句链接两个
.then()
方法

我显示的代码在我的
controller.js
中的回调函数中

if(!errors.isEmpty()) {
     return res.status(404).json({ errors: errors.array() });
} else {
    Modules.find({
        where: { id: req.params.id }
    })
    .then(Modules => {
        return Modules.updateAttributes({
        type: req.body.type,
        course: req.body.course,
        start: req.body.start,
        end: req.body.end,
        instructor: req.body.instructor 
          })
     })
     .then(updatedModule => {
          return res.status(204).json(updatedModule); 
     })
     .then(() => {
          return res.redirect(301, "/");
     })
     .catch(() => {
          return res.status(500).json({ errors: errors.array() });      
     });  
}

因此,您希望将一些响应发送回用户,然后将其重定向回baseUrl。 但是很抱歉,这是不可能的,因为当您将res发送回客户端时,头也会随之发送,并且在使用
res.redirect
之后,它会给您一个错误

您可以在这里直接使用
200状态代码重定向用户,如下所示

res.status(200)
res.redirect('/')

如果您使用XHR/AJAX发送请求,您可以直接基于状态代码编写重定向代码

res.redirect(200, '/')