node.js - gridfs-stream 和 mongoose >= 4.11.0 连接设置

标签 node.js mongodb mongoose

我一直在使用带有以下设置的旧版本(<4.11.0)的 mongoose 的 gridfs-stream:

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

使用这些设置一切都可以正常工作。更新到 mongoose 4.11.11 后,mongoose 连接设置应更改为(第 3 行):

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

但是,现在 mongoose.connection.db 不再定义。应该如何更改上面的代码才能使其再次工作?非常感谢。

最佳答案

我找到了一个利用 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());

关于node.js - gridfs-stream 和 mongoose >= 4.11.0 连接设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46161187/

相关文章:

java - MongoDB 和 Java 连接错误

node.js - 创建记录时出现重复键错误

node.js - AWS-SES 发送带附件的邮件 [application/pdf] Nodejs

javascript - Node - 尝试通过 CLI 键入 node server.js 来运行文件 "server.js",但它显示消息为“找不到模块”

node.js - 在 openssl 中解密 node.js aes-256-cbc 字符串

java - 如何在mongodb中动态添加现有嵌套文档中的文档

node.js - 在 Node.js 中查找 MongoDB 的查询

json - 使用 Caret 时是否应该在 package.json 中包含次要版本?

javascript - Node.js Mongoose 静态函数没有被调用

javascript - 计算状态记录(已批准、待定、拒绝)并将值返回到各自的变量中