如何将MongoDB集合传递给.pug模板?
我有这个函数获取一个名为Test的mongodb集合。
function get(req, res) {
mongo.GetSort({}, {state: 1, name: 1}, 'Test')
.then(function (list) {
res.send(list);
});
}
我如何将其传递给哈巴狗模板?我试着
在pug模板中 | console.log(Test)
但对象Test不存在。
我的目录中有test.js
和test.pug
。我尝试搜索我的问题,但大多数结果都涉及使用Express.js。谢谢
答案 0 :(得分:0)
我不知道你从哪里得到GetSort
?或Tailwater
是什么?并且你说没有涉及Express(因为function get(req, res){ res.send(...
肯定看起来像签名表达功能,所以你让我有点困惑。)
无论如何,这是我能提出的最简单的例子,没有任何暗示:
const compiledFunction = require('pug').compileFile('template.pug');
require('mongodb')
.connect('mongodb://localhost:27017/')
.then(mongo=>{
mongo
.db('somedb')
.collection('somecollection')
.find({})
.toArray()
.then(list=> {
// You just pass your data into the function
const html = compiledFunction({list: list});
console.log(html);
mongo.close();
});
});
沿着这些方向template.pug
:
html
head
title something
body
each item in list
div= item.title
事情是,表达最引人入胜。所以使用快递可能会使它更清洁。
因此,如果您有快递,则需要遵循文档:https://expressjs.com/en/guide/using-template-engines.html
app.set('view engine', 'pug'); //Tell express you want to use pug.
app.get('/', function (req, res) {
const list = ... //
res.render('template', { list : list });
})
这将与上面的例子做同样的事情并且还将html发送到客户端浏览器(毕竟这是表达的东西)。
我错过了什么吗?