仅更新用户信息中的一列 - MySQL NodeJS
Update only one column in user info - MySQL NodeJS
我正在使用 NodeJS/Express 和 MySQL 构建经典的 CRUD(创建、读取、更新、删除)API。
我创建了一个路径来更新我的用户信息,效果很好。
问题:
如果我不发送所有数据(first_name、last_name 等...),则没有数据的列会更新到 MySQL 数据库中的 undefined
,而有数据的列不会'更新。我希望如果我不发送数据,列不会发生变化,只有数据发生变化。
这是我的控制器:
module.exports.updateUser = (req, res, next) => {
if (req.method == "PUT") {
let userDetails = `UPDATE users SET first_name = '${req.body.first_name}', last_name = '${req.body.last_name}', user_name = '${req.body.user_name}' WHERE id = ${req.params.id}`;
sql.query(userDetails, function (err, result) {
if (!err) {
res.status(200).json({ message: "User infos updated." })
} else {
res.status(401).json({ message: "Error when updating user infos." })
}
})
}
}
因此,如果我对 db 中的现有用户发出 PUT
请求,例如只有邮件:
{
"mail": "test2@test2.com"
}
我所有的用户数据都变成 null
并且 user.mail
保持不变。
有人可以帮我解决这个问题吗?
谢谢
使用此查询一次更新一个或多个填充的更新
module.exports.updateUser = (req, res, next) => {
if (req.method == "PUT") {
let query = '';
if(req.body.first_name){
query = `first_name =
'${req.body.first_name}'`
}else
if(req.body.last_name){
query = ` last_name =
'${req.body.last_name}'`
}else
if(req.body.user_name){
query = `user_name =
'${req.body.user_name}'`
}eles if(req.body.first_name
&& req.body.last_name)
{
query =`first_name = '${req.body.first_name}', last_name = '${req.body.last_name}'`
}else if(
req.body.last_name && req.body.user_name
{
query = `last_name = '${req.body.last_name}', user_name = '${req.body.user_name}'`
}else if(req.body.first_name
&& req.body.last_name && req.body.user_name)
{
query =`first_name = '${req.body.first_name}', last_name = '${req.body.last_name, user_name = '${req.body.user_name}'}'`
}
let userDetails = `UPDATE users SET ${query} WHERE id = ${req.params.id}`;
sql.query(userDetails, function (err, result) {
if (!err) {
res.status(200).json({ message: "User infos updated." })
} else {
res.status(401).json({ message: "Error when updating user infos." })
}
})
}
}
我正在使用 NodeJS/Express 和 MySQL 构建经典的 CRUD(创建、读取、更新、删除)API。 我创建了一个路径来更新我的用户信息,效果很好。
问题:
如果我不发送所有数据(first_name、last_name 等...),则没有数据的列会更新到 MySQL 数据库中的 undefined
,而有数据的列不会'更新。我希望如果我不发送数据,列不会发生变化,只有数据发生变化。
这是我的控制器:
module.exports.updateUser = (req, res, next) => {
if (req.method == "PUT") {
let userDetails = `UPDATE users SET first_name = '${req.body.first_name}', last_name = '${req.body.last_name}', user_name = '${req.body.user_name}' WHERE id = ${req.params.id}`;
sql.query(userDetails, function (err, result) {
if (!err) {
res.status(200).json({ message: "User infos updated." })
} else {
res.status(401).json({ message: "Error when updating user infos." })
}
})
}
}
因此,如果我对 db 中的现有用户发出 PUT
请求,例如只有邮件:
{
"mail": "test2@test2.com"
}
我所有的用户数据都变成 null
并且 user.mail
保持不变。
有人可以帮我解决这个问题吗?
谢谢
使用此查询一次更新一个或多个填充的更新
module.exports.updateUser = (req, res, next) => {
if (req.method == "PUT") {
let query = '';
if(req.body.first_name){
query = `first_name =
'${req.body.first_name}'`
}else
if(req.body.last_name){
query = ` last_name =
'${req.body.last_name}'`
}else
if(req.body.user_name){
query = `user_name =
'${req.body.user_name}'`
}eles if(req.body.first_name
&& req.body.last_name)
{
query =`first_name = '${req.body.first_name}', last_name = '${req.body.last_name}'`
}else if(
req.body.last_name && req.body.user_name
{
query = `last_name = '${req.body.last_name}', user_name = '${req.body.user_name}'`
}else if(req.body.first_name
&& req.body.last_name && req.body.user_name)
{
query =`first_name = '${req.body.first_name}', last_name = '${req.body.last_name, user_name = '${req.body.user_name}'}'`
}
let userDetails = `UPDATE users SET ${query} WHERE id = ${req.params.id}`;
sql.query(userDetails, function (err, result) {
if (!err) {
res.status(200).json({ message: "User infos updated." })
} else {
res.status(401).json({ message: "Error when updating user infos." })
}
})
}
}