在API PUT请求更新MySQL数据库时,经常会遇到空值的问题,这是由于没有指定哪些值需要更新导致的。下面是一种解决该问题的方法,其中使用了Node.js和Express框架:
1.在Express app.js中设置中间件来处理PUT请求的提交数据,并将其格式化为JSON。使用body-parser插件可实现此功能。具体代码如下:
... const bodyParser=require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false }));
2.然后,我们需要检查用户是否输入了要更新的字段,具体代码如下:
... app.put('/user/:id', function (req, res) { const userID=req.params.id;
const updateValues=req.body;
if (Object.keys(updateValues).length==0){ return res.status(400).send({ error:true, message:"Please provide values to update" }); }
const query=connection.query('UPDATE users SET ? WHERE id = ?', [updateValues, userID] , function (error, results, fields) { if (error) throw error; return res.send({ error: false, data: results, message: 'User has been updated successfully.' }); }); });
3.最后,我们运行PUT请求并提供要更新的值。如果没有提供任何值,则返回400错误,并要求提供要更新的值。如果提供了值,则更新数据库并返回成功消息。
注意:这里我假设我们已经建立了一个user表,并且由一个具有id、name和email列的创建时间戳的自动增量主键。请根据自己的需要修改代码。