3

私はこれが間違っていることを知っていますが、本質的に私はしたいです

  • promise を介して db/orm に接続する
  • その約束を果たし、モデルを取得するのを待ちます (約束からの戻り)
  • ミドルウェア ジェネレータ関数の結果を使用して、リクエストにモデルを配置します。

これは最善のアプローチではないと思うので、基本的に 2 つの質問があります。

  • db/orm connect をジェネレーター関数に書き直す必要がありますか (koa スタイルによりインラインになっていると感じています)。
  • 元の質問に戻ります (すべてのビジネス ロジックを書き直す機会はないと確信しているため) - 約束が果たされてからジェネレーター関数が返されるのをどのように待ちますか?

これは私の貧弱な試みです - これは機能していません。正直なところ、期待していませんでしたが、コードを書くことから始めて、これを理解するために何かを操作したかったのです:

var connectImpl = function() {
  var qPromise = q.nbind(object.method, object);
  return qPromise ; 
}

var domainMiddlewareImpl = function() {
    let connectPromise = connectImpl()
    return connectPromise.then(function(models){
        return function *(next){
            this.request.models = models ;
        }
    })
}

var app = koa()
app.use(domainMiddlewareImpl())
4

2 に答える 2

2

thisによると、次のことができます。

var domainMiddlewareImpl = function() {
    return function *(){
        this.request.models = yield connectImpl();
    };
};
于 2014-08-19T14:28:29.400 に答える