首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库连接必须打开以在GridFSStorage._handleFile存储文件

数据库连接必须打开以在GridFSStorage._handleFile存储文件
EN

Stack Overflow用户
提问于 2019-01-03 11:23:26
回答 1查看 1.4K关注 0票数 0

我试图通过web应用程序将文件上载到本地MongoDB服务器上,如下所示:

代码语言:javascript
复制
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('server started port ${port}'));但我得到了错误:“数据库连接必须打开,以便在(/Users/payam/Desktop/mongodb-uploads/node_modules/multer-gridfs-storage/lib/gridfs.js:341:17) at /Users/payam/Desktop/mongodb-uploads/node_modules/multer/lib/make-middleware.js:144:17 at allowAll (/Users/.../Desktop/mongodb-uploads/node_modules/multer/index.js:8:的GridFSStorage._handleFile存储文件。( 3)在(/Users/.../Desktop/mongodb-uploads/node_modules/multer/index.js:44:7)的wrappedFileFilter餐馆。(/Users/.../Desktop/mongodb-uploads/node_modules/multer/lib/make-middleware.js:114:7) at Busboy.emit (events.js:182:13) at Busboy.emit (/Users/.../Desktop/mongodb-uploads/node_modules/busboy/lib/main.js:38:33) at PartStream.(/Users/.../Desktop/mongodb-uploads/node_modules/busboy/lib/types/multipart.js:213:13) at PartStream.emit (events.js:182:13) at HeaderParser.(/Users/.../Desktop/mongodb-uploads/node_modules/dicer/lib/Dicer.js:51:16) at HeaderParser.emit (events.js:182:13) at HeaderParser._finish (/Users/.../Desktop/mongodb-uploads/node_modules/dicer/lib/HeaderParser.js:68:8) at SBMH.(/Users/.../Desktop/mongodb-uploads/node_modules/dicer/lib/HeaderParser.js:40:12) at SBMH.emit (events.js:182:13)在SBMH._sbmh_feed (/Users/.../Desktop/mongodb-uploads/node_modules/streamsearch/lib/sbmh.js:159:14) at SBMH.push (/Users/.../Desktop/mongodb-uploads/node_modules/streamsearch/lib/sbmh.js:56:14)".有人能帮我,告诉我我的代码或机器出了什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2019-01-09 09:32:46

我所需要做的就是为Mongo设置useNewUrlParser: true:

代码语言:javascript
复制
// Create mongo connection
const conn = mongoose.createConnection(mongoURI, { useNewUrlParser: true });

对于端口,您可以设置为5000,如下所示:

代码语言:javascript
复制
const port = 5000;

app.listen(port, () => console.log(`server started on port ${port}`));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54021345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档