1

私はnodeとkoaに非常に慣れていないので、私の愚かさを許してください.

何かを台無しにしているかどうかはわかりません。しかし、OrientDB と一緒に Koa を使用したいと考えています。Oriento (Node のモジュール) を使用して OrientDB に接続できます。そして、Koaの発電機の力を利用したいと思います。

OrientDB データベースのデータは、アプリで使用しているオブジェクトに関連しているため、モデルを実装したいと思います (もちろん)。したがって、データベース部分への接続はそれに入ると思います。

「タスク」という名前のモデルがあり、いくつかのメソッドとゲッター/セッターを公開したいとします。だから Task.find(); OrientDB データベースからすべてのタスクを取得する必要があります

私が理解している限り、それをミドルウェア スタックのどこかにフックします。また、yield を使用して、ミドルウェアがデータを取得するまで待機するように、ジェネレーターを使用できるとよいでしょう。いくつかのエラー処理も同様に良いでしょう...

以上のことから:

  • 私の仮定は正しいですか?それとももっと良い方法がありますか?
  • 私はそれをすべて自分でしなければなりませんか?それとも、私が計画していることを容易にするモジュールがありませんか?
  • そのようなことを適切に行う方法を学び始めるのに良いポイントは何ですか?
  • mongodb/mysql/whatever の既存のラッパーを見て、そこから抽象化する必要がありますか?

ありがとう!

4

1 に答える 1

2

orient-db を使用したことはありませんが、github ページを見ると、接続プールを提供し、promise を返すようです。それに基づいて、私は次のようなことをします:

// 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);
}

うまくいけば、これが役に立ちます

http://knowthen.comの koajs で私のスクリーンキャストをチェックアウトすることをお勧めします。

于 2014-12-13T22:50:06.113 に答える