通过具有相同模式的猫鼬上的相同连接访问不同的数据库

时间:2018-09-11 14:39:38

标签: node.js mongodb mongoose

我正在尝试在同一连接上使用多个数据库。

mongoose.connect(url);
var db = mongoose.connection;

然后使用

到达所需的数据库
db.useDb(config.mongoose.database + '_' + myInput);

问题似乎总是出现在我开始与猫鼬建立连接的“默认”数据库中。

我很确定它与我使用模式模型的方式有关,但是到目前为止,我未能对其进行重构。

我在每个数据库上使用相同的架构。 在我的猫鼬存储库js文件中,我正在获取该模式-

var myModelSchema = require('./models/reference.schema')

然后在请求功能上,我正在做类似的事情-

function getAll(myInput) {
    db.useDb(config.mongoose.database + '_' + myInput);    
    return myModelSchema.find();
}

但是它会忽略“ myInput”,并且仍会转到我连接的默认数据库。 我认为这与模型架构从初始连接成为默认数据库的一部分有关吗?也许它也不能用于其他数据库?

如果我确实想知道这种情况, 如何通过useDB mongoose命令在模式查询(例如find,createOne等)之后在多个数据库上使用同一模式? 在我看来,我缺少了一些东西。

P.S。 我不想为将要使用的每个数据库编写静态代码。目标是拥有动态代码,该动态代码可以通过请求的输入来获取或创建不同数据库中的数据。

1 个答案:

答案 0 :(得分:0)

好吧,我决定退出猫鼬,并使用本机Mongo驱动程序实现了它。它对我的需求有明确的支持。

我之所以选择猫鼬,首先是因为它的模式模型及其周围的功能,但是具有动态交换数据库的能力对我来说更为重要。