0

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

  • 描述
  • 类别
  • 令牌

默认字段有类似

  • _ID
  • 长度
  • 块大小
  • 上传日期
  • md5
  • 内容类型

相反,想要添加类似

  • _ID
  • 长度
  • 块大小
  • 上传日期
  • md5
  • 内容类型
  • 描述
  • 类别和其他

还有一种方法可以将缩略图添加到文件中,所以我没有将我的文件 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')
});
4

1 回答 1

1

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

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

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

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

于 2018-11-29T23:56:55.967 回答