我在 Node.js
和 Pug
中使用 MongoDBClient
。
我想在我的数据库中获取所有比萨店的名称。因此,我编写了这一行:collection.find({cook:'Pizza'})
来选择所有比萨饼店,并且属性“name”存在。
但是 find
返回一个游标,因此我不能像这样直接使用它的返回: var array_pizzerias_names = collection.find({cook:'Pizza'}).get('名称')
。 (注意:我知道函数 get
不存在)。
我该怎么做?
在我的 Pug 文件中,我写了以下几行:
- for(var i = 0; i < array_pizzerias_names.length; i++) {
p=array_pizzerias_names[i].name
- }
最佳答案
我找到了解决方案。
MongoClient
(require('mongodb').MongoClient
) 提供了一个 find
方法签名,它有 2 个参数,第二个是打回来 ;后者的最后一个参数是一个 cursor
,它有一个 toArray
方法。
方法toArray
接受回调;它的最后一个参数是包含所有查找结果的数组,可以在 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
- }
关于node.js - 如何在 Pug 文件中显示数据库中的 "fields"' 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41322880/