如何添加除multer gridfs存储默认属性之外的新字段



我想添加除multer gridfs存储默认字段之外的新字段(对象(,但没有用,我想添加的字段是:

  • 描述
  • 类别
  • 代币

默认字段有类似的内容

  • _id
  • 长度
  • 大块大小
  • 上传日期
  • md5
  • contentType

相反,想要添加类似的内容

  • _id
  • 长度
  • 大块大小
  • 上传日期
  • md5
  • contentType
  • 说明
  • 类别和其他

还有一种方法可以将缩略图添加到文件中,这样我就不会在另一个集合中引用我的文件id

const storage = new GridFsStorage({
url: config.db,
file: (req, file) => {
return new Promise((resolve, reject) => {

const filename = req.body.fileName + path.extname(file.originalname);
const Description = req.body.Description
const fileInfo = {
filename: filename,
bucketName: 'contents',
metadata: req.body,

}
resolve(fileInfo, Description);

});
}
});
const   upload = multer({
storage
});
router.get('/', (req, res) => {
res.render('index');
console.log(req.body)
});
//** uploading file to the db */
router.post('/', upload.any(), (req, res) => {
res.redirect('/upload/files')
});

这些属性由multer填充,并由您使用的任何存储引擎进一步增强,在本例中,存储文件时使用multer gridfs存储。您将无法自己操作这些,因为它们是在请求中解析文件时生成的,然后存储在数据库中。

与其使用元数据来存储业务逻辑,不如使用mongoose这样的框架,将信息存储在集合中,并使用id字段来获取文件链接。像这样的

const Movie = mongoose.model('Movie', { 
description: String,
category: String,
token: String,
fileId: Schema.Types.ObjectId
});

从正文中读取字段,并使用此集合将其保存到数据库中,并使用文件的自动生成的_id作为fileId。通过这种方式,您可以轻松地查询数据,并且仍然有可用文件的句柄。

最新更新