我正在为我的应用程序网络构建 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 }))
}
是的,你可以直接调用 Model.update() 但 where 子句非常重要。
参见https://sequelize.org/docs/v7/querying/update/
我从您的更新查询中看到,您直接传递了 request.body,您需要确保正文中的数据已清理并且已经过验证和必要的清理。