【问题标题】:Chaining multiple responses to send data and then redirect url链接多个响应以发送数据,然后重定向 url
【发布时间】:2019-10-10 14:27:21
【问题描述】:

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

是否允许使用单独的 return 语句链接两个 .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() });      
     });  
}

【问题讨论】:

    标签: express promise sequelize.js


    【解决方案1】:

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

    您可以在这里做的是直接使用200 status code 像这样重定向用户

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

    res.redirect(200, '/')
    

    如果您使用 XHR/AJAX 发送请求,您可以直接根据那里的状态代码编写重定向代码。

    【讨论】:

      猜你喜欢
      • 2013-10-06
      • 2020-10-22
      • 1970-01-01
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多