Node.js 如何在Express中使用管线参数
我很难用express将点与Node.js 如何在Express中使用管线参数,node.js,mongodb,express,Node.js,Mongodb,Express,我很难用express将点与路由器.params对象连接起来 现在,我想让下面代码中的按钮success按钮指向一个url,其内容为someaddress.com/formula/:item.\u id HTML:(EJS模板引擎) 然后使用MongoDB文档中的信息生成页面 我不清楚你是怎么做到这一点的 谢谢您的帮助。您的代码不完全正确。在html中使用公式(复数),但在路由器中使用prop公式(单数)将对象传递给res.render。如果我理解你的代码,它们应该是相同的(公式)。接下来,re
路由器.params
对象连接起来
现在,我想让下面代码中的按钮success
按钮指向一个url,其内容为someaddress.com/formula/:item.\u id
HTML:(EJS模板引擎)
然后使用MongoDB文档中的信息生成页面
我不清楚你是怎么做到这一点的
谢谢您的帮助。您的代码不完全正确。在html中使用
公式
(复数),但在路由器中使用prop公式
(单数)将对象传递给res.render
。如果我理解你的代码,它们应该是相同的(公式
)。接下来,res.router的第一个参数应该是不带扩展名的html文件名,因此如果名称是formulas.html或formulas.ejs,则需要使用res.render('formulas',…
。呈现视图后,按钮应指向/formula/公式id
@Molda-我省略了代码,因为有人投票要求我的问题因不够清晰而关闭。html中的formulas
位来自从另一个路径传入的变量。formula一个
变量被设置为JSON对象中的一个变量,因此在本例中它不会有什么区别。好的,我只是阅读了您最初编写的内容。因此,您似乎感到困惑的url是/formula/:id
。您需要知道的是,:id
只是一个占位符,而不是实际值。如果有路由器.get('/formula/:id',…
将处理它,express将解析id并将其作为req.params.id
@Molda提供-谢谢。好的,那么如果我想显示formula
模板,但使用/formula/:id
url,我是否只需执行res.render('formula',{JSON data})
?是的。我想通过JSON data
你是指javascript对象,对吗?我注意到很多人把它称为JSON,但它只是一个对象。JSON是用于传输数据的数据格式。对象->{a:1},JSON->'{a:1}'
<% formulas.forEach(function(item){ %>
<div class="pure-u-1 pure-u-sm-1-2 pure-u-md-1-4 pure-u-xl-1-5">
<div class="formula-block centered" id="<%= item._id %>">
<h4 class="padded-top"> <%= item.name %></h4>
<p> <%= item.description %></p>
<button class="button-success pure-button"><a href="/formula/<%= item._id %>">Show</a></button>
<button class="button-warning pure-button">Delete</button>
</div>
</div>
<% }); %>
router.get('/formula/:id', function(req, res){
var db = req.db;
var collection = db.get('formulas');
var id = req.params.id;
collection.find({"_id": id}, {}, function(e, doc){
res.render('formula/:id', {
formula: doc,
title: `formula for ${doc.name}`,
description: `modify and view ${doc.name} formula`
});
});
});