Javascript 使用multer同时发布两个集合

Javascript 使用multer同时发布两个集合,javascript,post,multer,gridfs,Javascript,Post,Multer,Gridfs,我在发布两个集合时遇到了一个问题——一个是file,一个是literal对象,其中包含基于file的字段。 这是路线方法 // @route POST /upload // @desc Uploads file to DB router.post('/', upload.single('file'), auth, (req, res) => { const newFile = new File({ fileID: req.file.id, src: 'api/file

我在发布两个集合时遇到了一个问题——一个是file,一个是literal对象,其中包含基于file的字段。 这是路线方法

// @route POST /upload
// @desc  Uploads file to DB
router.post('/', upload.single('file'), auth, (req, res) => {
  const newFile = new File({
    fileID: req.file.id,
    src: 'api/files/image/' + req.file.filename,
    altText: 'No image',
    caption: req.body.caption
  })
  newFile.save()

});
和文件模型:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// Create Schema
const FileSchema = new Schema({
  fileID: {
    type: Schema.Types.ObjectId
  },
  src: {
    type: String
  },
  altText: {
    type: String
  },
  caption: {
    type: String
  }
});

module.exports = File = mongoose.model('file', FileSchema);
问题是,如果这样做,我将无法获取标题属性,并且会出现错误:

TypeError:无法读取未定义的属性“id”

或者如果我把它去掉

req.file.id

我明白了

TypeError:无法读取未定义的属性“filename”

即使我在我的数据库中得到了很好的值。 如果我同时删除id和文件名,我将获得caption属性。 所以问题是:

    fileID: req.file.id,
    src: 'api/files/image/' + req.file.filename

但我不知道如何处理。

我仍然不知道如何处理它,但我确实使用了控制台登录后路由方法: //@route POST/上传 //@desc将文件上载到数据库

router.post('/', upload.single('file'), auth, (req, res) => {
console.log(req.file);
  const newFile = new File({
    fileID: req.file.id,
    src: 'api/files/image/' + req.file.filename,
    altText: 'No image',
    caption: req.body.caption
  })
  newFile.save()

});
我得到:

undefined
[0] { fieldname: 'file',
[0]   originalname: 'slide1.jpg',
[0]   encoding: '7bit',
[0]   mimetype: 'image/jpeg',
[0]   id: 5de06f65ff1bdb5388f1a44c,
[0]   filename: 'e872d1cafee8d191b256d27efc5ac94f.jpg',
[0]   metadata: null,
[0]   bucketName: 'files',
[0]   chunkSize: 261120,
[0]   size: 235600,
[0]   md5: '06ef6fba95a331af99276199589d3ed4',
[0]   uploadDate: 2019-11-29T01:07:50.105Z,
[0]   contentType: 'image/jpeg' }
看来我必须等待请求,因为

请求文件

还没有定义,所以我得到了错误,它停止并没有发布这个req.body.caption。 这就是我所怀疑的