Fluffy
Fluffy

Reputation: 217

gridfs-stream and mongoose >= 4.11.0 connection settings

I have been using gridfs-stream with older versions (<4.11.0) of mongoose with the following settings:

    var grid = require("gridfs-stream");
    var mongoose = require("mongoose");
    mongoose.connect(connectionString);
    grid.mongo = mongoose.mongo;
    var gfs = grid(mongoose.connection.db);

All works fine with these settings. After the update to mongoose 4.11.11 the mongoose connection setting should be changed to (3rd line):

    mongoose.connect(connectionString, {useMongoClient: true});

However, now mongoose.connection.db is no longer defined. How should the above code be changed to make it work again? Many thanks.

Upvotes: 1

Views: 417

Answers (1)

Fluffy
Fluffy

Reputation: 217

I found a solution which makes use of deasync and with minimal changes to all my existing code. However it does not look ideal so any suggestions will be greatly appreciated:

    var grid = require("gridfs-stream");
    var mongoose = require("mongoose");
    var deasync = require("deasync");

    //Connect to mongodb
    mongoose.Promise = global.Promise;
    mongoose.connect(connectionString, {useMongoClient: true});

    //Get the connection setting
    var getConnDb = function () {
        var connDb;
        mongoose.connection.then(function (conn) {
            connDb = conn.db;
        });
        while (connDb === undefined) {
            deasync.runLoopOnce();
        }
        return connDb;
    };

    //Set gridfs-stream connection
    grid.mongo = db.mongo;
    var gfs = grid(getConnDb());

Upvotes: 2

Related Questions