2016-12-25 3 views
1

Node.jsに、Pugに使用します。Pugファイルのデータベースから "fields"値を表示するにはどうすればいいですか?

私のデータベースにすべてのピッツァリアの名前を入れたいと思っています。したがって、私はこの行を書いた:collection.find({cook:'Pizza'})すべてのピッツェリアを選択し、属性 "名前"が存在します。

しかし、findはカーソルを返すので、私はそのような戻り値を直接使用することはできません:var array_pizzerias_names = collection.find({cook:'Pizza'}).get('name')。 (NB:ファンクションgetは存在しません)。

どうすればいいですか?私は解決策を見つけた

 - for(var i = 0; i < array_pizzerias_names.length; i++) { 
      p=array_pizzerias_names[i].name 
     - } 

答えて

1

:私のパグファイルで

は、私はこれらの数行を書きました。

MongoClientrequire('mongodb').MongoClient)は、2つのパラメータを取るメソッド署名を提供し、2番目はコールバックです。後者の最後のパラメータはcursorであり、方法はtoArrayである。

メソッドtoArrayはコールバックを受け取ります。その最後のパラメータは、findのすべての結果を含むarrayであり、Pugで使用できます。

以下のコードが機能します。

Node.jsのコード(JavaScriptファイル):

 collection.find({cuisine: speciality}, (error, cursor) => { 
      handleError(error, res); 

      cursor.toArray((error, array_results) => { 
       handleError(error, res); 

       app.locals.speciality = speciality; 
       app.locals.array_documents = array_results; 
       res.render("speciality.pug"); 

      }); 
     }); 

パグファイル:

doctype html 
html(lang='fr') 
    head 
     title='Speciality' 
     body 
      h1 Speciality : #{speciality} - Number of buildings : #{array_documents.length} 
      - for(var i = 0; i < array_documents.length; i++) { 
       p=array_documents[i].name + " - Address : " + array_documents[i].address.street + " " + array_documents[i].borough + ", building n°" + array_documents[i].address.building 
      - } 
関連する問題