【问题标题】:Tenancy in MEAN ApplicationMEAN 申请中的租赁
【发布时间】:2017-06-22 09:00:14
【问题描述】:

我正在尝试在 MEAN 中创建一个多租户应用程序,根据某个变量的值,它应该从连接池中选择一个 mongoDB 连接并对集合执行 CURD 操作。

var mongoose    = require('mongoose');
var connectionPool = {};

connectionPool['dbName1'] =  mongoose.createConnection('mongodb://localhost/database1');

connectionPool['dbName2'] =  mongoose.createConnection('mongodb://localhost/database2');

connectionPool['dbName3'] = mongoose.createConnection('mongodb://localhost/database3');

问题是用于进行 CURD 操作时的连接对象不起作用。

错误 - db.collection(...).find(...).exec 不是函数

谢谢。

【问题讨论】:

    标签: node.js mongodb express mongoose mean-stack


    【解决方案1】:

    您正在将mongodb API 与mongoose 混合使用。

    由于您使用的是mongoose,因此您可以创建附加到特定连接的模型:

    https://stackoverflow.com/a/19475270/2013580

    var conn      = mongoose.createConnection('mongodb://localhost/testA');
    var conn2     = mongoose.createConnection('mongodb://localhost/testB');
    
    // stored in 'testA' database
    var ModelA    = conn.model('Model', new mongoose.Schema({
      title : { type : String, default : 'model in testA database' }
    }));
    
    // stored in 'testB' database
    var ModelB    = conn2.model('Model', new mongoose.Schema({
      title : { type : String, default : 'model in testB database' }
    }));
    

    【讨论】:

    • 我正在尝试动态添加租户,有没有办法做到这一点?
    • @utkarshsharma 你可以动态地做所有这些。只需在每个连接中设置模型定义,构建一个基于连接参数执行此操作的函数。
    猜你喜欢
    • 2016-06-12
    • 2021-10-08
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 2018-08-15
    相关资源
    最近更新 更多