«Невозможно прочитать свойство« один раз »из неопределенного» при попытке использовать gridfs для mongodb - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь использовать gridfs для загрузки файлов в мою систему. Я столкнулся с проблемой при попытке подключить mongodb к gridfs Я только использую соединение gridfs из своих документов. файл приложения:

// DB Config

const db = require("./mongoos1.js");

// Connect to MongoDB
const conn = db.connect((err) => {
    if (err) {
        console.log('unable to connect to database');
        process.exit(1);
    }

    else {
        app.listen(5000, () => {
            console.log('connected to database, app listening on port 5000');
        });
    }
});
// Init gfs
let gfs;

conn.once('open', () => {
  // Init stream
  gfs = Grid(conn.db, mongoose.mongo);
  gfs.collection('uploads');
});

файл Mongoose:

const MongoClient = require('mongodb').MongoClient;
const ObjectID = require('mongodb').ObjectID;
const dbname = "FYP";
const url = "mongodb://localhost:27017/FYP";
const mongoOptions = { useNewUrlParser: true };

const state = {

    db: null
};


const connect = (cb) => { // connect method
    if (state.db) //if there is connection
        cb();
    else { // if there isn't
        MongoClient.connect(url, mongoOptions, (err, client) => { // we use mongoclient to connect
            if (err)
                cb(err);
            else {
                state.db = client.db(dbname); // if no error , set state
                cb();
            }
        });
    }
}



module.exports = { connect }; //exposing methods

я где-то ошибаюсь?

1 Ответ

1 голос
/ 03 мая 2019

mongoDB соединение не совпадает с соединением, которое возвращается из createConnection

  1. .createConnection () возвращает экземпляр подключения
  2. .connect () возвращает глобальный экземпляр mongoose

Вы должны подключить ваш обработчик событий к соединению, как возвращено createConnection (), а не к mongoose.connection

Или переместите свой код из «однажды открытого» в функцию обратного вызова .connection ().

...