【问题标题】:How can I use node-orm2 to model two or more databases with Express?如何使用 node-orm2 通过 Express 对两个或多个数据库进行建模?
【发布时间】:2013-03-14 15:20:53
【问题描述】:

我正在尝试将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.used table1 的数据库,所以第二个find 调用将产生

TypeError: Cannot call method 'find' of undefined

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

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

【问题讨论】:

    标签: database node.js orm


    【解决方案1】:

    您的代码看起来不错。我认为问题在于您使用的是“req.db.models”而不仅仅是“req.models”。来自documentation

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

    还有:

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

    一切都在“模型”下混为一谈,数据库之间没有区别。这意味着您不能在多个数据库中为您的模型命名相同的东西,而是 c'est la guerre。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多