Node.js gridfs流和猫鼬>;=4.11.0连接设置

Node.js gridfs流和猫鼬>;=4.11.0连接设置,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我一直在将gridfs stream与旧版本一起使用(我发现了一个解决方案,该解决方案使用了deasync,并且对我现有的所有代码进行了最小的更改。但是,它看起来并不理想,因此任何建议都将非常感谢: var grid = require("gridfs-stream"); var mongoose = require("mongoose"); var deasync = require("deasync"); //Connect to mongodb m

我一直在将gridfs stream与旧版本一起使用(我发现了一个解决方案,该解决方案使用了deasync,并且对我现有的所有代码进行了最小的更改。但是,它看起来并不理想,因此任何建议都将非常感谢:

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

谢谢你的回答。事实上,现在connection.db只有在建立连接后才被设置。你不必强制使用deasync,因为你可以使用它:
mongoose.connect(connectionString,{useMongoClient:true})。然后((mongoInstance)=>{connDb=mongoInstance.connection.db})
    mongoose.connect(connectionString, {useMongoClient: true});
    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());