在bogart中使用promisified数据访问

时间:2015-06-02 13:06:36

标签: javascript promise

我正在尝试使用bogartjs和couchdb建立一个简单的博客。

我像这样使用viewEngine:

var viewEngine = bogart.viewEngine('mustache', path.join(bogart.maindir(), 'views'));

要获取数据库中所有帖子的列表,我使用bogart.promisify进行实际调用并返回一个承诺,如下所示:

router.get('/postsp', function(req) {
  var articles = nano.db.use('articles');

  var readlist = bogart.promisify(articles.list);

  readlist().then(function(data) {
    console.log(data);
    return viewEngine.respond('posts.html', data)
  });
  console.log('render');
});

但是此方法不会返回带有数据的模板posts.html。这是在控制台中:

render
{ total_rows: 2,
  offset: 0,
  rows:
   [ { id: '1ec1ba2efd99b08a296022a471000adc',
       key: '1ec1ba2efd99b08a296022a471000adc',
       value: [Object] },
     { id: '20ce1f108a8bdf2f19f04f42b0001a04',
       key: '20ce1f108a8bdf2f19f04f42b0001a04',
       value: [Object] } ] }

如何使用承诺的结果返回/呈现模板?

1 个答案:

答案 0 :(得分:0)

您的对象需要上下文。出于同样的原因:

var log = console.log;
log(15); // exception in browsers.

传递上下文:

var readlist = bogart.promisify(articles.list, articles);