我怎样才能使用node-orm2来模拟两个或更多的数据库?

我正在尝试使用Node-orm2作为中间件, Express文档仅显示如何连接到一个数据库。

我试图让Express使用两个不同的中间件层,但没有运气。 例如,

app.use(orm.express('sqlite://test.db', define: { /* define table1 */ })); app.use(orm.express('sqlite://test2.db', define: { /* define table2 */ })); 

我把所有的东西都正确地路由到这个get处理程序

 app.get("/", function (req, res) { var t1 = req.db.models.table1.find(...); var t2 = req.db.models.table2.find(...); res.send([t1,t2]); }); 

由于我app.use table1的数据库, find调用的第二个会产生

 TypeError: Cannot call method 'find' of undefined 

…这意味着这两个define:块没有合并,这是我们想要的。

我将如何使用node-orm2访问两个数据库?

你的代码似乎很好。 我认为问题在于你正在使用“req.db.models”而不是“req.models”。 从文档 :

 app.get("/", function (req, res) { // req.models is a reference to models used above in define() req.models.person.find(...); }); 

并且:

你可以多次调用orm.express来build立多个数据库连接。 在连接中定义的模型将在req.models中连接在一起。 不要忘记在app.use(app.router)之前使用它,最好在您的资产公用文件夹之后。

在“模型”下,所有事情都变得一团糟,数据库之间没有区别。 这意味着您不能在多个数据库中将您的模型命名为相同的东西,但是c'est la guerre。