如何在帕格文件中显示数据库中的“字段”的值?
我在Node.js
和Pug
使用MongoDBClient
。
我想在我的数据库中获得所有的比萨店名称。 因此,我写了这样一行: collection.find({cook:'Pizza'})
来select所有的比萨店,并且存在“name”属性。
但是find
返回一个游标,所以我不能直接使用它的返回值: var array_pizzerias_names = collection.find({cook:'Pizza'}).get('name')
。 (注意:我知道函数get
不存在)。
我怎么能这样做?
在我的帕格文件中,我写了这几行:
- for(var i = 0; i < array_pizzerias_names.length; i++) { p=array_pizzerias_names[i].name - }
我find了解决scheme。
MongoClient
( require('mongodb').MongoClient
)提供了一个find
方法签名,其中有两个参数,第二个是callback; 后者的最后一个参数是一个cursor
,它有一个方法toArray
。
toArray
方法需要callback; 它的最后一个参数是包含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 - }