javascript - 使用 NodeJS 忽略 MySQL UPDATE 中的未定义数据

标签 javascript mysql node.js

我用 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 部分无法正常工作。这是一个更新页面,所以我从数据库中获取所有以前的数据。所以更新页面看起来像这样

enter image description here

在文件上传按钮中,默认数据为空,如果我用不同的图像更新,它工作正常。但是我想使它不指定新的图像文件,我只想按原样使用旧数据。

但是如果文件存在它就可以工作但是如果它不存在它就会给我一个错误。

TypeError: Cannot read property 'filename' of undefined

最佳答案

我想这就是你想要的:

let imgurl = req.file ? req.file.filename : undefined;

换句话说:如果用户没有上传文件,imgurl 应该是未定义的,否则它应该包含文件的名称。

关于javascript - 使用 NodeJS 忽略 MySQL UPDATE 中的未定义数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53361904/

相关文章:

javascript - 未捕获的类型错误 : b is not a function in nodejs(electron)

javascript - Angular 4. XHR 请求中的错误停止了链式可观察量

javascript - Meteor 不输出 MongoDB 查询

node.js - 使用 Cheerio 从 XML 元素获取即时文本

php - mysql:从key等于一个值的表中选择,并选择与该值直接或间接相关的所有行

php - 根据一定长度获取字符串而不切割它

javascript - 将 Active Class 添加到当前列表菜单项而不在 marko 中使用客户端 JS/jquery?

javascript - 阻止用户输入大于 3 位小数的 float

javascript - NodeJs中的和成对整除?

php - SQL从两个表中获取值