Сохранить буфер из экспресс с GridFS в MongoDB

Поэтому я пытаюсь сохранить файл изображения, который я отправляю как часть в моем MongoDB через GridFS. Я использую multer и параметр memoryStorage.

let upload = multer({ storage:  multer.memoryStorage() }).single('imageFile');
app.use(upload);

Внутри маршрута я получаю доступ к буферу следующим образом:

let buffer: Buffer = req.file.buffer;

Это прекрасно работает, и я борюсь с сохранением этого буфера в моем MongoDB.

let writeStream = this.gfs.createWriteStream({
            mode: 'w',
            filename: 'Image',
            content_type: 'image/png'
        });
streamifier.createReadStream(buffer).pipe(writeStream);

Вот как я пытаюсь сохранить буфер в моем MongoDB.

Mongoose: fs.files.ensureIndex([ [ 'filename', 1 ] ], { w: 1 })
Mongoose: fs.chunks.ensureIndex([ [ 'files_id', 1 ], [ 'n', 1 ] ], { w: 1, unique: true })
Mongoose: fs.files.findOne({ _id: ObjectId("597089c973179c0138eef7ae") }, { w: 1, readPreference: 'primary' })

Это журнал, который я получаю от моего MongoDB. Но ничего не хранится в БД.

у кого-нибудь есть решение? Уже пробовал это решение, но оно не сработало для меня.

1 ответ

Решение

Так что, видимо, проблема была не в коде, который я разместил. Это работает, но будьте уверены, что ваш gfs загружен с экземпляром MongoDB, а не с соединением.

Другие вопросы по тегам