带有sequelize和Express的API:在控制器中进行验证

问题描述 投票:0回答:1

我正在为我的应用程序网络构建 API。我正在使用 Sequelize 和 Express。 我已经使用 Sequelize 创建了模型,目前正在编写不同的控制器和端点。

我的问题是:在使用 Sequelize 的方法之前是否需要进行数据检查? 我问这个问题是因为 Sequelize 的方法内部也使用数据检查。

目前我已经有了。但是...我真的需要进行检查吗?因为它们也是在 Sequelize 中完成的?

exports.editUser = (req, res) => {
    let userId = parseInt(req.params.id);

    if (!userId) {
        return res.status(400).json({ message: "Missing ID parameter" })
    }

    User.findOne({ where: { id: userId }, raw: true })
        .then(user => {
            if (user === null) {
                return res.status(404).json({ message: "This user does not exist !" })
            }

            User.update(req.body, { where: { id: userId } })
                .then(user => res.json({ message: "User updated" }))
                .catch(err => res.status(500).json({ message: "Error BDD", error: err }))
        })
        .catch(err => res.status(500).json({ message: "Error BDD", error: err }))
}

我可以只写这个吗?

exports.editUser = (req, res) => {
    let userId = parseInt(req.params.id);

    if (!userId) {
        return res.status(400).json({ message: "Missing ID parameter" })
    }

    User.update(req.body, { where: { id: userId } })
          .then(user => res.json({ message: "User updated" }))
          .catch(err => res.status(500).json({ message: "Error BDD", error: err }))
}
javascript node.js express controller sequelize.js
1个回答
0
投票

是的,你可以直接调用 Model.update() 但 where 子句非常重要。

参见https://sequelize.org/docs/v7/querying/update/

我从您的更新查询中看到,您直接传递了 request.body,您需要确保正文中的数据已清理并且已经过验证和必要的清理。

© www.soinside.com 2019 - 2024. All rights reserved.