【问题标题】:node.js mongoose multiple database across project using same schemanode.js mongoose 跨项目使用相同模式的多个数据库
【发布时间】:2020-02-05 18:48:00
【问题描述】:

我想在一个项目中使用多个数据库,但我很难调用 跨许多路由控制器的辅助数据库。我不想关闭与主数据库的连接

我认为当前将数据插入多个控制器的方法效率不高 足够了,即

------>>        all these are called every time a file needs to connect to the secondary database
----------------------------------------------------------------------------------------|
var mongoose = require('mongoose');                                                     |
var mongooseConnect = mongoose.createConnection('mongodb://localhost/27017/'+dbName);   |
                                                                                        |
require('./models');                                                                    |
var modelData = mongooseConnect.model('models');                                        |
----------------------------------------------------------------------------------------|
modelData.save()

我正在寻找一种方法,可以让我

  1. 连接到辅助数据库一次,并在我想要跨控制器的任何时候调用它

  2. 将以上代码合并成一行代码

我已经通过正常方式调用了主数据库

route.js

var mongoose = require('mongoose'); 
mongoose.connect(mongodbhost/maindb)

然后在模式中我只需要在模式中使用猫鼬之前。并且只有模式在 路由控制器。 任何帮助将不胜感激

【问题讨论】:

    标签: node.js express mongoose


    【解决方案1】:

    您可以在多个数据库中使用相同的架构,但您需要创建到两个数据库的连接。你可以这样做:

    const conn1 = mongoose.createConnection('mongodb://localhost:27017/test1');
    const conn2 = mongoose.createConnection('mongodb://localhost:27017/test2');
    
    const TestSchema = require('./TestSchema');
    var TestModelDb1 = conn1.model('Model', TestSchema);
    var TestModelDb2 = conn2.model('Model', TestSchema);
    

    【讨论】:

    • 非常感谢,但我想做的是声明一次辅助连接并使其在所有其他路由控制器中可用。你刚才写的方法和我上面写的差不多
    • 只需在控制器中调用适当的模型。连接只创建一次。
    • 拜托我不明白你。我相信当我从一条路线更改为另一条路线时,它会调用主数据库而不是我想使用的辅助数据库
    猜你喜欢
    • 2021-07-18
    • 2014-07-27
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多