使用场景:
当前端修改数据提交,完整的对象字段时,因为要检测id是否重复了,或者名称是否重复时,mysql的UPDATE就不能写死,以下为动态根据前端提交的对象更新UPDATE代码
async function checkAndDeleteIfExists(formData, field, propName) {
// 删除重复的字段
const exists = await checkDataExists('image_hosting', field, formData[propName]); //这一段是我自己封装的查询数据是否存在,使用时请自己封装一个
if (exists) {
delete formData[propName]; //如果存在就删除formData里的字段
}
}
async function ImagesHosting_edit(req, res) {
const formData = req.body;
const formDataID = formData.ID
await checkAndDeleteIfExists(formData, 'ID', 'ID');//检测id是否重复,重复删除
//根据formData 生成UPDATE
const setClause = Object.keys(formData).map(key => `${key} = ?`).join(', ');
const values = Object.values(formData);
// 构建 WHERE 子句
const whereClause = `ID = ?`;
values.push(formDataID);
const query = `
UPDATE
image_hosting
SET
${setClause}
WHERE
${whereClause};
`;
console.log(query); //查看UPDATE是否生成正确
console.log(values);//查看更新的数据是否values生成正确
return res.status(200).json({ message: 'ImagesHosting_edit测试成功', status: true });
}