我正在尝试在同一连接上使用多个数据库。
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。 我不想为将要使用的每个数据库编写静态代码。目标是拥有动态代码,该动态代码可以通过请求的输入来获取或创建不同数据库中的数据。
答案 0 :(得分:0)
好吧,我决定退出猫鼬,并使用本机Mongo驱动程序实现了它。它对我的需求有明确的支持。
我之所以选择猫鼬,首先是因为它的模式模型及其周围的功能,但是具有动态交换数据库的能力对我来说更为重要。