Загрузка файла хранилища Multer GridFS с привязкой к схеме Mongoose - PullRequest
0 голосов
/ 27 июня 2019

Я могу загрузить файл на мою MongoDB, используя multer-gridfs-storage, но у меня возникают проблемы с привязкой файла к моей схеме "customer". По сути, у каждого клиента должно быть три типа файлов: сеть, электронная почта и файлы паролей. Каждый файл будет в формате .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 });
  });

1 Ответ

0 голосов
/ 14 июля 2019

В вашей модели Customer есть три поля для трех типов файлов.Сохраните файлы в разных коллекциях с помощью gridfs-storage, а затем сохраните идентификатор этих загруженных файлов в соответствующее поле в вашей модели.Таким образом, вы можете хранить разные коллекции файлов разного типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...