отсутствует ошибка аргумента БД при соединении gridfs multer и mongodb - PullRequest
0 голосов
/ 15 апреля 2019

Я использую gridfs и mutler для загрузки файлов, таких как ppt, pdf и т. Д. В атлас mongodb.При настройке маршрутизатора, он продолжает говорить, что db not found У меня есть uri в файле конфигурации. Что мне не хватает здесь в атласе mongodb? У меня есть 3 коллекции в базе данных под названием 'test'. Нужно ли мне создавать еще одну базу данных в кластере?Пожалуйста, помогите

, если (! Db) выдает новую ошибку ('отсутствует аргумент дБ \ nnew Grid (db, mongo)');^

Ошибка: отсутствует аргумент db new Grid (db, mongo) в новой Grid (/Users/ezana/Desktop/Canvas/backend/node_modules/gridfs-stream/lib/index.js:25: 18) в Grid (/Users/ezana/Desktop/Canvas/backend/node_modules/gridfs-stream/lib/index.js:19:12) в Object.(/Users/ezana/Desktop/Canvas/backend/api/routes/fileUploadRoutes.js:9:11) в Module._compile (внутренний / modules / cjs / loader.js: 701: 30) в Object.Module._extensions..js (внутренний / modules / cjs / loader.js: 712: 10) в Module.load (внутренний / modules / cjs / loader.js: 600: 32) в tryModuleLoad (внутренний / modules / cjs / loader.js: 539: 12) в Function.Module._load (внутренний / modules / cjs / loader.js: 531: 3) в Module.require (внутренний / modules / cjs / loader.js: 637: 17) по требованию (внутренний / modules /cjs / helpers.js: 22: 18) на объекте.(/Users/ezana/Desktop/Canvas/backend/app.js:7:21) в Module._compile (внутренний / modules / cjs / loader.js: 701: 30) в Object.Module._extensions..js (внутренний/modules/cjs/loader.js:712:10) в Module.load (внутренний / modules / cjs / loader.js: 600: 32) в tryModuleLoad (внутренний / modules / cjs / loader.js: 539: 12) вFunction.Module._load (внутренний / 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
        }
    }
});

1 Ответ

0 голосов
/ 14 июля 2019

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);
      });
    });
  }
});

Это сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...