【问题标题】:How do i add new field other than multer-gridfs-storage default properties我如何添加除 multer-gridfs-storage 默认属性以外的新字段
【发布时间】:2018-11-29 23:15:56
【问题描述】:

我想添加 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')
});

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    猜你喜欢
    • 2014-08-21
    • 1970-01-01
    • 2018-06-05
    • 2018-07-22
    • 2017-09-20
    • 2014-11-29
    • 2021-09-09
    • 2015-04-14
    • 1970-01-01
    相关资源
    最近更新 更多