【问题标题】:I have a problem validating on update (express)我在验证更新时遇到问题(快递)
【发布时间】:2021-09-15 03:50:05
【问题描述】:

我正在尝试创建一个验证器,当用户尝试更新数据库架构中不存在的列时,该验证器将显示错误消息。我正在使用 PostgreSQL。当我发送包含正确允许更新的请求时,它会返回错误:“无效更新”我错过了什么?

const updateQuestion = async (req, res) => {

const updates = Object.keys(req.body)
const allowedUpdates = ['title', 'text, questionCateg']
const isValidOperation = updates.every((update) => allowedUpdates.includes(update))

if (!isValidOperation) {
    return res.status(400).send({
        error: 'Invalid updates'
    })
}

try {
    const {
        id
    } = req.params;
    const {
        title,
        text,
        questionCateg
    } = req.body


    const updateQuestion = await pool.query("UPDATE Questions SET title = $1, text = $2, questionCateg = $3 WHERE id =$4",
        [title, text, questionCateg, id]);
    console.log(updateQuestion)
    res.json('Question updated')
} catch (e) {
    res.status(400).send()



}
}

路线:

router.patch('/questions/:id', updateQuestion)

提前致谢!

【问题讨论】:

  • 变量updates 可能有问题

标签: javascript node.js express validation


【解决方案1】:

当你使用 console.log(req.body) 时你看到了什么?你应该专注于更新数组。

您可以在 app.js 或 express.json() 中间件中使用 body-parser 这样您就可以成功接收您发送到后端的商品。

您可以在发布请求正文中发送带有密钥更新的更新。然后你可以像 req.body.updates 一样解析它(updates 是一个数组)

你可以像这样使用正文解析器

app.use(bodyParser.urlencoded({ 
     extended: true 
}));

或 app.use(express.json())

您可以在此帖子中查看更多信息express.json() and express.urlencoded()

【讨论】:

  • 谢谢,console.log(req.body) 返回我用新值更新的对象。
猜你喜欢
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多