Mongoose共享多个数据库的模型模式

时间:2016-03-16 12:15:38

标签: node.js mongodb mongoose multi-tenant mongoose-schema

我正在尝试在我的应用程序中实现多租户。每个租户都将拥有一个单独的数据库。我计划使用mongoose.useDb方法基于子域名为每个客户端动态更改/切换mongoose数据库连接。当使用useDb更改/切换每个数据库时,是否需要重新编译mongoose模型模式?是否有任何替代方法通过跨多个数据库连接共享模式来完成此任务。任何帮助将非常感谢。谢谢提前。

2 个答案:

答案 0 :(得分:4)

您可以轻松地使用规范中定义的Mongoose多个连接:http://mongoosejs.com/docs/connections.html#multiple_connections

您只需将模型设置为每个连接。但是,当为每个连接编译模型时 - 您应该具有一些适当的功能来共享该代码。它可能非常基础,比如在简单对象中描述Schema,然后将其填充到您的特定连接中:

var UserSchema = {
    name: String
}

var connection1 = mongoose.createConnection('mongodb://localhost/connection1');
connection1.model('User', mongoose.Schema(UserSchema));

var connection2 = mongoose.createConnection('mongodb://localhost/connection2');
connection2.model('User', mongoose.Schema(UserSchema));

答案 1 :(得分:0)

我将创建一个条件,该条件在用户登录后运行,以确定系统应连接到哪个数据库。