2017-06-27 4 views
0

レンダリングされたルートでの非同期データを返す:NodeJSエクスプレスルートのように、私はレンダリングにいくつかの非同期関数を渡すことで、私のレンダリングされたページよりスマートのいくつかを作るしようとしている

var functions = { 
    paginatedCategory: function(category) { 
     db.query(`SELECT * FROM content WHERE FIND_IN_SET(Category, "${category}") ORDER BY position`, function(error, results) { 
     console.log(results, 'results'); 
     return results; 
     }) 
    } 
} 

をその後、私は「ルートでmがこれを行う:

res.render('category', functions); 

そして

category.pugページで、私はその関数を呼んでいる内部のように:

ul 
    each val in paginatedCategory('Products') 
     li=val 

コンソールでは、そのカテゴリのすべての正しい項目が出力されますが、レンダリングは何も表示されません.MySQLデータベースのクエリは非同期であるため、すべての項目を取得する前にページをレンダリングするので、このような状況?

また、ファイルからファイルに変更されるため、.pugファイルから直接パラメータを渡すことができます。

答えて

0

通常、これを処理する方法は、すべての非同期データを最初に取得し、データ構造に入れ、すべてのデータを取得した後にres.render()と呼び出して、収集したデータを渡します。

この記事の例は、Rendering a page after asynchronous operationsです。

関連する問題