【问题标题】:missing db argument error when connecting gridfs multer and mongodb连接gridfs multer和mongodb时缺少db参数错误
【发布时间】:2019-04-15 20:25:31
【问题描述】:

我正在使用 gridfs 和 mutler 将 ppt pdf 等文件上传到 mongodb atlas。设置路由器时,它一直说 db not found 我在配置文件中有我的 uri。我在 mongodb atlas 中缺少什么我在名为“test”的数据库中有 3 个集合我必须在集群中创建另一个 db 吗?请帮忙

if (!db) throw new Error('缺少 db 参数\nnew Grid(db, mongo)'); ^

错误:缺少 db 参数 new Grid(db, mongo) 在新网格 (/Users/ezana/Desktop/Canvas/backend/node_modules/gridfs-stream/lib/index.js:25:18) 在网格 (/Users/ezana/Desktop/Canvas/backend/node_modules/gridfs-stream/lib/index.js:19:12) 在对象。 (/Users/ezana/Desktop/Canvas/backend/api/routes/fileUploadRoutes.js:9:11) 在 Module._compile (internal/modules/cjs/loader.js:701:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10) 在 Module.load (internal/modules/cjs/loader.js:600:32) 在 tryModuleLoad (internal/modules/cjs/loader.js:539:12) 在 Function.Module._load (internal/modules/cjs/loader.js:531:3) 在 Module.require (internal/modules/cjs/loader.js:637:17) 在需要(内部/模块/cjs/helpers.js:22:18) 在对象。 (/Users/ezana/Desktop/Canvas/backend/app.js:7:21) 在 Module._compile (internal/modules/cjs/loader.js:701:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10) 在 Module.load (internal/modules/cjs/loader.js:600:32) 在 tryModuleLoad (internal/modules/cjs/loader.js:539:12) 在 Function.Module._load (internal/modules/cjs/loader.js:531:3)

const router = require('express').Router();
const multer = require('multer');
const db = require('./config/main').mongoURI;
const {
    mongo,
    connection
} = require('mongoose');
const Grid = require('gridfs-stream');
Grid.mongo = mongo;
const gfs = Grid(connection.db);

const storage = require('multer-gridfs-storage')({
    db: connection.db,
    file: (req, file) => {
        return {
            filename: file.originalname
        }
    }
});

【问题讨论】:

    标签: express mongoose gridfs mongodb-atlas multer-gridfs-storage


    【解决方案1】:

    const mongoose = require("mongoose");
    const multer = require("multer");
    const Grid = require("gridfs-stream");
    const GridFsStorage = require("multer-gridfs-storage");
    const db = mongoose.connection;
    
    let gfs;
    db.once("open", function() {
      gfs = Grid(db.db, mongoose.mongo);
    });
    
    
    
    const storage = new GridFsStorage({
      url:
        url,
      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);
          });
        });
      }
    });

    这对我有用。

    【讨论】:

      猜你喜欢
      • 2018-09-26
      • 2021-11-13
      • 1970-01-01
      • 2018-03-28
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多