我知道这是错的,但基本上我想要
我怀疑这不是最好的方法,所以基本上我有两个问题:
这是我糟糕的尝试 - 这是行不通的,老实说,我没想到它,但我想从编写代码开始,有一些工作来解决这个问题:
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())
答案 0 :(得分:2)
根据this,您可以执行以下操作:
var domainMiddlewareImpl = function() {
return function *(){
this.request.models = yield connectImpl();
};
};
答案 1 :(得分:0)
基于Hugo(thx)提供的信息的上下文敏感答案:
var connectImpl = function() {
var qPromise = q.nbind(object.method, object);
return qPromise ;
}
var domainMiddlewareImpl = function () {
let models = null ;
return function *(next) {
if(models == null){
//////////////////////////////////////////////////////
// we only want one "connection", if that sets up a
// pool so be it
//////////////////////////////////////////////////////
models = yield connectImpl() ;
}
this.request.models = models.collections;
this.request.connections = models.connections;
yield next
};
};
我的例子是connectImpl在ORM(现在为水线)中建立域模型,连接到数据库(池),并返回ORM模型和数据库连接的承诺。我只希望发生一次,然后通过我的Koa中间件对每个请求,将对象添加到请求中。