[英]Passing MongoDB Data into .ejs-Template with Node.js Express
[英]Passing MongoDB data into .ejs with node.js
路線:
app.get('/admin/cardapio', function(req, res) {
Produtos.find({}).exec(function(err, produtos) {
if (err) throw err;
res.render('admin/cardapio.ejs', { data: produtos});
});
});
表:
<% for (var i = 0; i < data.length; i++) {%>
<tr>
<td><%= data[i]._id %></td>
<td><%= data[i].description %></td>
<td><%= data[i].type %></td>
<td><%= data[i].price %></td>
<td>EDITAR / REMOVER</td>
</tr>
<%}%>
Mongo DB結果:
{
"title" : "teste",
"description" : "teste",
"price" : "20",
"type" : "teste",
"_id" : ObjectId("5b2790f7f9f2ab37e813504d"),
"__v" : 0
}
當我在每一行上僅使用data[i]
時,它會顯示整個結果,但是如果我輸入.title
則它什么也不會顯示,而當我從mongodb中輸入_id
,它將正常顯示
路由.js
app.get('/admin/cardapio', function(req, res) {
Produtos.find({}, function(err, produtos) {
if (err){
console.log(err);
}else{
res.render('admin/cardapio.ejs', { data: produtos});
}
});
});
EJS文件
<% data.forEach(function(foundData, i){%>
<tr>
<td><%= foundData.title %></td>
</tr>
<%}%>
你可以測試嗎?
使用如下所示的forEach循環:
<% data.forEach(function(product){ %>
<tr>
<td><%= product.title %></td>
<td><%= product._id %></td>
<td><%= product.description %></td>
<td><%= product.type %></td>
<td><%= product.price %></td>
<td>EDITAR / REMOVER</td>
</tr>
<%})%>
或者如果您想使用for循環 :
<% for (var i = 0; i < data.length; i++) {%>
<tr>
<td><%= data[i]["title"] %></td>
<td><%= data[i]["_id"] %></td>
<td><%= data[i]["description"] %></td>
<td><%= data[i]["type"] %></td>
<td><%= data[i]["price"] %></td>
<td>EDITAR / REMOVER</td>
</tr>
<%}%>
MongoDB中存在"__v" : 0
以及您正在使用的.exec()
方法意味着您正在將Mongoose用作ODM(可以向我確認嗎?)。
您的查詢返回的結果不是JSON對象,而是Mongoose模型實例。 這就是為什么需要對結果調用.toJSON()
的原因:
res.render('admin/cardapio.ejs', { data: produtos.map(p => p.toJSON()) });
嘗試傾斜您的結果,它將貓鼬對象轉換為通用json對象
app.get('/admin/cardapio', async (req, res) => {
try {
const products = await Produtos.find({}).lean();
res.render('admin/cardapio', {products});
}
catch (error) {
console.error(error);
res.status(500).send('Oops..');
}
});
EJS文件
<% products.forEach(function(product, index) { %>
<tr>
<td><%= product.title %></td>
<td><%= product.description %></td>
<td><%= product.type %></td>
<td><%= product.price %></td>
<td>
<a href="/path/to/edit/<%= product._id %>">EDITAR</a>
/
<a href="/path/to/delete/<%= product._id %>">REMOVER</a>
</td>
</tr>
<% }) %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.