Я пытаюсь загрузить файл на локальный сервер MongoDB через веб-приложение следующим образом:
const express = require("express");
const bodyParser = require('body-parser');
const path = require('path');
const crypto = require('crypto');
const mongoose = require('mongoose');
const GridFsStorage = require('multer-gridfs-storage');
const Grid = require('gridfs-stream');
const methodOverride = require('method-override');
const multer = require('multer');
const app = express();
// Middleware
app.use(bodyParser.json());
app.use(methodOverride('_method'));
app.set('view engine', 'ejs');
// Mongo URI
const mongoURI =
'mongodb://localhost:27017/database'
// Create mongo connection
const conn = mongoose.createConnection(mongoURI);
// Init gifs
let gfs;
conn.once('open', () => {
// Init Stream
gfs = Grid(conn.db, mongoose.mongo);
gfs.collection('uploads');
})
// Create storage engine
const storage = new GridFsStorage({
url: 'mongodb://localhost:27017/database',
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);
});
});
}
});
const upload = multer({ storage });
// @route GET /
// @desc Loads form
app.get('/', (req, res) => {
res.render('index');
})
// @route POST /upload
//@desc upload file to DB
app.post('/upload', upload.single('file'), (req, res) => {
res.json({ file: req.file });
});
const port = 27017;
app.listen (port, () => console.log ('сервер запущен на порту $ {port}'));
но я получаю ошибку: «Соединение с базой данных должно быть открыто для хранения файлов
в GridFSStorage._handleFile (/Users/payam/Desktop/mongodb-uploads/node_modules/multer-gridfs-storage/lib/gridfs.js:341:17)
по адресу /Users/payam/Desktop/mongodb-uploads/node_modules/multer/lib/make-middleware.js:144:17
в allowAll (/Users/.../Desktop/mongodb-uploads/node_modules/multer/index.js:8:3)
at wrappedFileFilter (/Users/.../Desktop/mongodb-uploads/node_modules/multer/index.js:44:7)
в автобусе. (/Users/.../Desktop/mongodb-uploads/node_modules/multer/lib/make-middleware.js:114:7)
на Busboy.emit (events.js: 182: 13)
на Busboy.emit (/Users/.../Desktop/mongodb-uploads/node_modules/busboy/lib/main.js:38:33)
на PartStream. (/Users/.../Desktop/mongodb-uploads/node_modules/busboy/lib/types/multipart.js:213:13)
на PartStream.emit (events.js: 182: 13)
в HeaderParser. (/Users/.../Desktop/mongodb-uploads/node_modules/dicer/lib/Dicer.js:51:16)
в HeaderParser.emit (events.js: 182: 13)
в HeaderParser._finish (/Users/.../Desktop/mongodb-uploads/node_modules/dicer/lib/HeaderParser.js:68:8)
на SBMH. (/Users/.../Desktop/mongodb-uploads/node_modules/dicer/lib/HeaderParser.js:40:12)
на SBMH.emit (events.js: 182: 13)
на SBMH._sbmh_feed (/Users/.../Desktop/mongodb-uploads/node_modules/streamsearch/lib/sbmh.js:159:14)
на SBMH.push (/Users/.../Desktop/mongodb-uploads/node_modules/streamsearch/lib/sbmh.js:56:14) ".
Любое тело может помочь и сказать мне, что не так с моим кодом или с моим
машина