Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用NodeJS忽略MySQL更新中未定义的数据_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript 使用NodeJS忽略MySQL更新中未定义的数据

Javascript 使用NodeJS忽略MySQL更新中未定义的数据,javascript,mysql,node.js,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;

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

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

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

TypeError: Cannot read property 'filename' of undefined

我想这就是你想要的:

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

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

如何配置
multer
<代码>文件名仅在您使用时可用,例如。@robertklep在multer中配置了DiskStorage,以便我可以使用文件名。但它仅在文件不存在时才起作用谢谢您的帮助!它现在可以工作了。!!:)我忘记了条件三元运算符。