Промежуточное ПО KoaJS и доступ к базе данных

Если бы у меня было это, чтобы показать индекс для модели пользователей:

app.use(route.get('/user', list));

function *list() {
  var res = yield users.find({});
  this.body = res;
};

Можно ли поместить часть доступа к базе данных в собственное промежуточное программное обеспечение, а затем вызвать следующий?

Как вы могли бы передать полученный список пользователей следующему промежуточному программному обеспечению? И как пройти дальше по маршруту?

Итак, первое промежуточное ПО — это любой необходимый доступ к БД, а второе промежуточное ПО — представление?


person Dolbery    schedule 15.05.2015    source источник


Ответы (1)


По сути, вы прикрепляете информацию к контексту запроса или ключевому слову this в промежуточном программном обеспечении.

Я создал скринкаст о написании промежуточного программного обеспечения, который может быть полезен:

http://knowthen.com/episode-4-writing-middleware-in-koajs/

Вот пример того, как вы будете передавать информацию нижестоящему промежуточному программному обеспечению.

let koa   = require('koa'),
    users = require('./users'),
    app   = koa();

function *firstMiddleWare (next) {
  this.session = {
    user: yield users.find({});
  }
  yield next;
}

function *secondMiddleware (next) {
  // this.session.user is available here
  yield next;
}

app.use(firstMiddleWare);
app.use(secondMiddleware);

app.use(function *(){
  // this.session.user is available here as well
  this.body = this.session.user;
});

app.listen(3000);
person James Moore    schedule 15.05.2015
comment
Спасибо! Отличный учебник :) - person Dolbery; 16.05.2015