【问题标题】:Multer GridFS Storage File Upload With Association To Mongoose Schema与 Mongoose Schema 关联的 Multer GridFS 存储文件上传
【发布时间】:2019-06-27 02:03:01
【问题描述】:

我可以使用 multer-gridfs-storage 将文件上传到我的 MongoDB,但我无法将文件与我的“客户”架构关联起来。基本上,每个客户都应该拥有三种类型的文件:网络文件、电子邮件文件和密码文件。 每个文件都是一个 .txt。我的最终目标是为每个客户提供一个展示页面,并能够通过 :id 找到客户,然后填充客户的三个文件。

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const customerSchema = new Schema({
    name: {
        type: String
          },
    address: {
        street: String,
        city: String,
        state: String,
        zip: String,
    },
    fileID:
        {
            type: Schema.Types.ObjectId,

        }

}, { timestamps: true });


module.exports = mongoose.model("Customer", customerSchema);



// Create mongo connection
const conn = mongoose.createConnection(process.env.MONGO_DB_URL);

// Init gfs
let gfs;

conn.once('open', () => {
  // Init stream
  gfs = Grid(conn.db, mongoose.mongo);
  gfs.collection('customers');
});

// Create storage engine
const storage = new GridFsStorage({
  url: process.env.MONGO_DB_URL,
  file: (req, file) => {
        return {
        filename: file.originalname,
        bucketName: 'customers'
        };


  }
});
const upload = multer({ storage });



post route to upload files

router.post('/upload', upload.single('file'), (req, res) => {
    res.json({ file: req.file });
  });

【问题讨论】:

  • 欢迎来到 Stack Overflow!这是一个好的开始;请详细说明您尝试正在工作的部分、没有工作的部分、预期输出与实际输出以及您收到的任何错误消息等;谢谢!

标签: mongoose multer gridfs gridfs-stream multer-gridfs-storage


【解决方案1】:

在您的客户模型中为三种类型的文件设置三个字段。使用 gridfs-storage 将文件保存到不同的集合中,然后将这些上传文件的 id 存储到模型中的相应字段中。这样您就可以保存不同类型文件的不同集合。

【讨论】:

    猜你喜欢
    • 2016-06-22
    • 2021-06-08
    • 2019-04-27
    • 1970-01-01
    • 2015-01-25
    • 2018-03-24
    • 2013-10-27
    • 2016-04-05
    • 2019-05-02
    相关资源
    最近更新 更多