如何在Node.js中上传文件并将其保存在数据库中?

时间:2020-11-02 13:28:17

标签: node.js express mongoose

我能够上传文件并将用户的文件名保存在数据库中。

现在,我希望用户可以拥有文件名数组。

<-这是我的架构->

const FileSchema = new mongoose.Schema({
  file: {
    type: String,
  },
});

const UserSchema = new mongoose.Schema({
name:String,
files:[FileSchema]
)}

<-这是路线->

const storage = multer.diskStorage({
  destination: "public/upload",
  filename: function (req, file, cb) {
    cb(
      null,
      file.fieldname + "-" + Date.now() + path.extname(file.originalname)
    );
  },
});

//Initialize Upload
const upload = multer({
  storage: storage,
  fileFilter: function (req, file, cb) {
    checkFileType(file, cb);
  },
}).single("file");

//Check File Type
function checkFileType(file, cb) {
  // Allowed extensions
  const fileTypes = /pdf/;

  //Check extensions
  const extname = fileTypes.test(path.extname(file.originalname).toLowerCase());

  //Check mime
  const mimetype = fileTypes.test(file.mimetype);

  if (mimetype && extname) {
    return cb(null, true);
  } else {
    cb("Error:Pdf only");
  }
}
router.post("/user/:id/upload", async (req, res) => {
  const _id = req.params.id;

  try {
    let user = await User.findById(_id);
    upload(req, res, (err) => {
      if (err) {
        console.log(err);
      } else {
        console.log(req.file);
         user.files.unshift(req.file.filename);
          await user.save();
          res.status(200).json(user.files);
       }

<-在控制台中,我收到此错误:

“ UnhandledPromiseRejectionWarning:ValidationError:用户验证失败:files.0._id:在路径” _id“的值” file-1604322715352.pdf“的对象ID转换--

0 个答案:

没有答案
相关问题