Итак, я нашел решение этой проблемы.
Задача: загрузить изображение в mongoDB в виде двоичных данных, используя ведра, куски и т. д.
URL ссылки
Код:
const express = require("express");
const router = express.Router();
const User = require('../models/user');
const grid = require('gridfs-stream');
const GridFsStorage = require('multer-gridfs-storage');
const util = require("util");
const crypto = require('crypto');
const path = require('path');
const methodOverride = require('method-override');
const bodyParser = require('body-parser');
const dotenv = require("dotenv").config({path: "./config/config.env"});
const multer = require('multer');
const storage = new GridFsStorage({
url: process.env.MONGO_URI,
options: {
useUnifiedTopology: true
},
file: (req, file) => {
return new Promise((resolve, reject) => {
crypto.randomBytes(16, (err, buf) => {
if (err) {
return reject(err);
}
const filename = buf.toString('hex') + path.extname(file.originalname);
const fileInfo = {
filename: filename,
bucketName: 'uploads'
};
resolve(fileInfo);
});
});
}
});
var uploadFile = multer({storage: storage}).single("file");
var uploadFilesMiddleware = util.promisify(uploadFile);
module.exports = uploadFilesMiddleware;
Проблема:
Предупреждение об устаревании Прослушивание событий в классе Db объявлено устаревшим и будет удалено в следующей основной версии.
Исправить:
Так что скорее всего проблема не в вас. Он находится в самой упаковке. (посмотрите ссылку выше)
Перейдите в папку node_modules (это папка с большим количеством файлов) в вашем приложении node_js.
Перейти к multer-gridfs-storage (внутри node_modules)
Перейдите в папку lib (внутри multer-gridfs-storage)
Откройте gridfs.js
Найдите этот комментарий (// Это все события, которые выдают ошибки)
Заменить это
this.db .on('ошибка', errEvent) .on('parseError', errEvent) .on('timeout', errEvent) .on('close', errEvent);
С этим
this.client
.on('error', errEvent)
.on('parseError', errEvent)
.on('timeout', errEvent)
.on('close', errEvent);
В основном измените замените «db» на «client».
Вы также можете перейти на официальную страницу и проверить текущие проблемы, там четко указано, что у multer-gridfs-storage есть проблема с дебрикацией.
Ссылка на выпуск
person
koshur
schedule
13.06.2021