2015-06-02 3 views
0

Я пытаюсь создать простой блог с bogartjs и couchdb.Использование обещания доступа к данным в bogart

Я использую 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] } ] } 

Как вернуть/отобразить шаблон с результатом обещания?

ответ

0

Контекст требуется для вашего объекта. Это по той же причине:

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

Пропустите контекст:

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

Это, кажется, не быть ответом. Статьи взяты в обещанном нано-вызове. 'console.log (data)' фактически выплевывает все данные в базе данных. Только ответ не получается. Как видно из журнала, консольное сообщение «render» печатается перед вышеупомянутым сообщением консоли с данными. Проблема здесь в том, что 'viewEngine.respond' никогда не выполняется или что он не делает того, чего я ожидаю от него. – tuvokki

+0

@tuvokki вам также не нужно возвращать до 'readList()' - как в 'return readList(). Then (...)' –

+0

Спасибо. Вот и все. Я полагаю, что добавление контекста ничего не меняет, но возврат перед 'readList(), а затем (...)' сделал трюк. – tuvokki

Смежные вопросы