Javascript Koa:在没有现有包装器的情况下,连接到数据库最明智的方法是什么? 我对膝关节炎和膝关节炎非常陌生,请原谅我的愚蠢。

Javascript Koa:在没有现有包装器的情况下,连接到数据库最明智的方法是什么? 我对膝关节炎和膝关节炎非常陌生,请原谅我的愚蠢。,javascript,node.js,orientdb,koa,oriento,Javascript,Node.js,Orientdb,Koa,Oriento,我不确定我是否把事情搞砸了。但我想使用膝关节炎与OrrutDB。我可以使用Oriento(节点模块)连接到OrientDB。我想使用膝关节炎的发电机的功率。< /P> 因为我的OrientDB数据库中的数据与我在应用程序中使用的对象相关,所以我想实现模型(当然)。所以我想连接到数据库的部分会用到这一点 假设我有一个名为“Task”的模型,那么我希望它公开几个方法和getter/setter。所以Task.find();应该从OrientDB数据库获取所有任务 据我所知,我会在中间件堆栈中的某个地

我不确定我是否把事情搞砸了。但我想使用膝关节炎与OrrutDB。我可以使用Oriento(节点模块)连接到OrientDB。我想使用膝关节炎的发电机的功率。< /P> 因为我的OrientDB数据库中的数据与我在应用程序中使用的对象相关,所以我想实现模型(当然)。所以我想连接到数据库的部分会用到这一点

假设我有一个名为“Task”的模型,那么我希望它公开几个方法和getter/setter。所以Task.find();应该从OrientDB数据库获取所有任务

据我所知,我会在中间件堆栈中的某个地方挂接它。如果我可以使用生成器,让中间件使用yield等待数据返回,那就太好了。一些错误处理也会很好

尽管如此:

  • 我的假设正确吗?还是有更好的办法
  • 我必须自己做吗?还是说我缺少了促进我成为什么样的人的模块 计划
  • 开始学习如何正确地做这样的事情有什么好处
  • 我是否应该看看现有的mongodb/mysql/包装器并从中抽象出来

谢谢

我从未使用过orient db,但查看github页面,它似乎提供了一个连接池并返回了承诺。基于此,我会这样做:

// in utils/oriento.js or similar
// instantiate it once and share in multiple places(models), since it offers 
// connection pooling
var Oriento = require('oriento');
var server = Oriento({
  host: 'localhost',
  port: 2424,
  username: 'root',
  password: 'yourpassword'
});
var db = server.use({
  name: 'mydb',
  username: 'admin',
  password: 'admin'
});
module.exports = db;
然后,对于模型:

// models/item.js 
var db = require('../utils/oriento.js');

var Item = function(props){

};

Item.findById = function(id){
    // db.query returns a promise
    return db.query('select from OItem where id=:id', {
      params: {
        id: id
      },
      limit: 1
    });

}
// add getters, setters, find etc...
module.exports = Item;
然后在控制器中:

// server.js or wherever

var Item = require('./models/item');

app.get('/:id', function *(){
    var id = this.params.id;
    this.body = yield Item.findById(id);
}
希望这能有所帮助


您可能想在James上查看我在koajs上的屏幕广播,但这不包括打开/关闭多个连接。