Проблема с Multer и сохранением модели Mongodb - PullRequest
1 голос
/ 12 июня 2019

Я использую multer для загрузки файла в свой бэкэнд.Вот маршрут:

// @route  POST api/users/resume
// @desc   Upload user resume
// @access Private
router.post("/resume", auth, async (req, res) => {
  try {
    let resumeBackupName = null;

    let resumeMatrix = {
      "application/vnd.ms-excel": "xls",
      "application/msword": "doc",
      "application/vnd.openxmlformats-officedocument.wordprocessingml.document":
        "docx",
      "application/pdf": "pdf"
    };

    let user = await User.findById({ _id: req.user.id.toString() });

    if (
      user.resume &&
      user.resume.extension &&
      user.resume.extension.length > 0
    ) {
      resumeBackupName =
        req.user.id.toString() +
        "-backup-" +
        user.resume.extension.length.toString() +
        "." +
        user.resume.extension[user.resume.extension.length - 1];

      user.resume.backup.push(resumeBackupName);
    }

    let date = new Date();
    let resumeMimeType = null;
    let resumeExtension = null;

    const storage = multer.diskStorage({
      destination: (req, file, cb) => {
        cb(null, "public");
      },
      filename: (req, file, cb) => {
        cb(
          null,
          req.user.id.toString() +
            "-" +
            date.getTime() +
            "-" +
            file.originalname
        );
      }
    });

    const upload = multer({ storage: storage }).single("file");

    upload(req, res, err => {
      resumeMimeType = req.file.mimetype;
      resumeExtension = resumeMatrix[resumeMimeType];

      user.resume.mimeType = resumeMimeType;
      user.resume.extension.push(resumeExtension);

      if (err instanceof multer.MulterError) {
        return res.status(500).json(err);
      } else if (err) {
        return res.status(500).json(err);
      }
    });

    await user.save();

    return res.json({ msg: "Success!" });
  } catch (err) {
    console.log(err);
    res.status(500).send("Server error");
  }
});

Проблема в функции загрузки.Запись в консоль user после строк user.resume.mimeType = resumeMimeType; и user.resume.extension.push(resumeExtension); правильно отображает значения, но при нажатии await user.save() ничего не сохраняется.Это вопрос объема?Я получаю предупреждение variables declared but never used для let resumeMimeType = null; и let resumeExtension = null;, но они используются в функции загрузки.Не уверен, что я делаю не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...