Py学习  »  MongoDB

MongoDB模式/模型中文件的字段类型是什么?

Carlos Herrera • 5 年前 • 1555 次点击  

我正在使用mongo模式发布表单。对所有字符串都很好,但现在我正在尝试上载一个文件。应该在架构中指定文件的字段类型?

//create model/schema
const TrackSchema = new Schema({
    title:{
        type: String, 
        required: true
    },
    length:{
        type: String, 
        required: true
    }, 
    available:{
        type: Boolean, 
        required: true
    },
    image:{
        type: String, 
        required: true
    }, 
    date: {
        type: Date, 
        default: Date.now
    }, 
    source: {
        type: **??, 
        required: true
    }
})

我应该将“source”字段设置为什么类型,它将是来自表单的文件

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47618
 
1555 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Daniel Varela
Reply   •   1 楼
Daniel Varela    6 年前

它实际上取决于您的用例——特别是您正在处理的约束。

我可以想到两种方法:

  1. 存储为 type: Buffer 是的。
  2. 存储为 type: String 在里面 base64 是的。

存储为 Buffer 可能是存储空间/速度的最有效方法。它还提供了将其转换为用例所需的任何类型的灵活性。

存储为 String 当您需要访问文件进行下载时,将使您更容易控制文件内容,因为您不需要从 缓冲器 基数64 是的。

就我个人而言,我喜欢将文件存储为 缓冲器 并在其他必要的领域,如 filename mimetype 会产生如下结果:

source: {
        file: { type: Buffer, required: true },
        filename: { type: String, required: true },
        mimetype: { type: String, required: true }
      }

……但这也适用于我的用例。

还有第三种存储方法 GridFS 在Mongo中,以防您的文件超过16MB的文件大小。您可以在他们的官方文档页面中阅读更多信息: https://docs.mongodb.com/manual/core/gridfs/

Ravi Kumar Gupta
Reply   •   2 楼
Ravi Kumar Gupta    6 年前

通常,您将文件数据存储到数据库(如果您正在存储文件)。

有多种方法可以存储文件数据。

  1. 您的文件大小小于16 MB。您可以将数据直接存储到缓冲区中的集合(二进制数据)。

    source : { data: Buffer, contentType: String }
    
  2. 如果文件大小超过16MB,可以使用 GridFS 是的。

  3. 将文件存储在磁盘上,只需存储MongoDB集合的路径。在这种情况下,类型将只是字符串。