【问题标题】:PUT method with express and sequelize使用 express 和 sequelize 的 PUT 方法
【发布时间】:2019-07-17 21:39:16
【问题描述】:

我卡在了 PUT 方法通过 req.params.id 更新数据,我试图通过 id 获取数据,然后它在表单表中显示 id 用户搜索的数据,然后当他们改变它的值,应该是更新tp数据库

这是我的代码:

router.put('/:id' , (req,res, next)=> {
  Student.findById(+req.params.id)
  .then(data => {
    let arr = data.dataValues;
    res.render('edit', {
      files : arr
    })
  })
  .catch(err => {
    res.status(404).send('something went wrong');
  })

  const  theKey = key => key || undefined
    const {first_name, last_name, email } = req.body
    let obj = {
      first_name : theKey(first_name),
      last_name: theKey(last_name),
      email: theKey(email),
      createdAt: new Date(),
      updatedAt: new Date()
    }
    Student.update(obj,
        { returning: true,
          where: {
            id : req.params.id
          }
        })
    .then(updated => {
      res.send(`updated`)
    })
})

在我的 app.js 中

app.use('/students/edit', editstudent )

当我去路由器我的学生列表在数据库中后,它不会更新数据, 我的 PUT 方法有问题吗??

【问题讨论】:

  • 尝试记录id findById(+req.params.id)
  • 它应该是可编辑的学生表单的形式,当我尝试更改表单输入并提交时,id 不会改变任何我尝试将 update() 移动到 findByID 中的东西,但仍然也行不通
  • 检查req.params.id有值
  • 是的,它有值,当我通过 id 查找时,我得到了数据,并且数据在表单上,​​类似于 pasteboard.co/I2CkCMi.png 表单上的样子

标签: javascript database rest express sequelize.js


【解决方案1】:
res.render('edit', {
  files : arr
})
.then(updated => {
  res.send(`updated`)
})

student没有更新的原因是第一个代码块执行完毕,在更新代码执行之前响应客户端。我认为您应该在更新学生后呈现页面。

【讨论】:

  • 第一次渲染只是显示表单,然后用户填写表单后,它应该更新,但它不起作用,
猜你喜欢
  • 2021-08-27
  • 2021-12-07
  • 2017-07-17
  • 1970-01-01
  • 2017-03-08
  • 2018-04-18
  • 1970-01-01
  • 2018-07-20
  • 2020-12-11
相关资源
最近更新 更多