javascript - 使用 NodeJS 忽略 MySQL UPDATE 中未定义的数据
问题描述
我用 nodejs 开发了 CRUD(创建、读取、更新、删除)应用程序。但是我在更新功能中有一些问题。
/* POST Update Page */
router.post(
"/:userId/:pageId/update_process",
upload.single("projectImg"),
function(req, res) {
let userId = req.params.userId;
let pageId = req.params.pageId;
db.query(`SELECT imgurl FROM Personal_Data WHERE id=?`, [pageId], function(
error,
data
) {
if (error) {
throw error;
}
console.log(data[0]);
let checkImage = data[0];
let name = req.body.projectName;
let type = req.body.portType;
let url = req.body.projectUrl;
let explanation = req.body.projectExplanation;
let imgurl = req.file.filename;
let sumlang = req.body.sumLang;
let pjdate1 = req.body.pjdate1;
let pjdate2 = req.body.pjdate2;
let githuburl = req.body.githuburl;
// If Imgurl is undefined
if (imgurl === undefined) {
db.query(
`UPDATE Personal_Data SET name=?, type=?, url=?, explanation=?, sumlang=?, pjdate1=?, pjdate2=?, githuburl=? WHERE id=?`,
[
name,
type,
url,
explanation,
sumlang,
pjdate1,
pjdate2,
githuburl,
pageId
]
);
// If Imgurl is exist
} else {
db.query(
`UPDATE Personal_Data SET name=?, type=?, url=?, explanation=?, imgurl=?, sumlang=?, pjdate1=?, pjdate2=?, githuburl=? WHERE id=?`,
[
name,
type,
url,
explanation,
imgurl,
sumlang,
pjdate1,
pjdate2,
githuburl,
pageId
]
);
}
});
res.redirect("/" + userId);
}
);
所有功能都可以正常工作,但在 imgurl 部分无法正常工作。这是一个更新页面,所以我从 DB 获取所有以前的数据。所以更新页面看起来像这样
在文件上传按钮中,默认数据为空,如果我用不同的图像更新,它工作正常。但是我想制作如果我不指定新的图像文件,我只想按原样使用旧数据。
但是如果文件存在它可以工作,但如果它不存在它会给我一个错误。
TypeError: Cannot read property 'filename' of undefined
解决方案
我认为这就是你想要的:
let imgurl = req.file ? req.file.filename : undefined;
换句话说:如果用户没有上传文件,imgurl
则应该是未定义的,否则它应该包含文件的名称。
推荐阅读
- c# - 将键值对的 SQL 行序列化为 JSON 对象
- javascript - 反应原生不显示导入的标签
- algorithm - 计算到平面子集边缘的距离的有效方法(仅限整数坐标)
- java - 在输入正确的输入之前,如何不让用户继续前进?
- javascript - 通过单击按钮更改背景颜色
- android - 从数据库获取数据后如何匹配指纹
- tensorflow - 如何通过TensorFlow手动计算神经网络中多个中间梯度的最终梯度?
- javascript - 反应触发键盘事件
- python - Numba 不接受 numpy 数组数据类型
- simulation - AnyLogic:模拟完成后查看各个agent的参数