我如何添加除multer-gridfs-storage默认属性以外的新字段

时间:2018-11-29 23:15:56

标签: node.js express multer multer-gridfs-storage

我想添加除multer-gridfs-storage默认字段以外的新字段(对象),但无济于事,我要添加的字段是:

  • 说明
  • 类别
  • 令牌

默认字段类似

  • _id
  • 长度
  • chunksize
  • uploadDate
  • md5
  • contentType

相反想添加

  • _id
  • 长度
  • chunksize
  • uploadDate
  • 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')


});

1 个答案:

答案 0 :(得分:1)

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

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

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

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