Node.js 从EJS调用PUT-to-express
我试图从EJS表单调用在expressjs中创建的restful apiNode.js 从EJS调用PUT-to-express,node.js,express,ejs,Node.js,Express,Ejs,我试图从EJS表单调用在expressjs中创建的restful api app.get('/orders/:coffeeid',function(req, res) { db.collection('orders').find({_id:req.params.coffeeid}).toArray, function(error,result){ if(!error && result && quantity){ retu
app.get('/orders/:coffeeid',function(req, res) {
db.collection('orders').find({_id:req.params.coffeeid}).toArray, function(error,result){
if(!error && result && quantity){
return res.render('orders.ejs',{orders: result, coffeeid:result.coffeeid, quantity:'7'}); // <-- pass coffeeid to view
}
}
});
我尝试了谷歌和stackoverflow,尝试了很多不同的方法
orders.ejs:
<ul class="orders">
<% for(var i=0; i<orders.length; i++) {%>
<ul class="order">
<p> coffee_id <span><%= orders[i].name %></span>
amount: <span><%= orders[i].amount %></span>
quantity <span><%= orders[i].quantity %></span> </p>
</ul>
<% } %>
</ul>
<div>
<form action="/orders" method="POST" action="orders/?_method=PUT">
<input type="text" placeholder="username" name="username">
<input type="text" placeholder="coffee name" name="name">
<input type="number" placeholder="amount" name="amount">
<input type="number" placeholder="quantity" name="quantity">
<button type="submit" id="order" >Submit</button>
</form>
</div>
这段代码可以使用正确的参数从Postman单独调用它们,但是当我提交EJS表单时,我需要同时调用它们
app.get('/orders/:coffeeid',function(req, res) {
db.collection('orders').find({_id:req.params.coffeeid}).toArray, function(error,result){
if(!error && result && quantity){
return res.render('orders.ejs',{orders: result, coffeeid:result.coffeeid, quantity:'7'}); // <-- pass coffeeid to view
}
}
});
app.get('/orders/:coffeeid',函数(req,res){
db.collection('orders').find({u id:req.params.coffeeid}).toArray,函数(错误,结果){
如果(!错误和结果和数量){
返回res.render('orders.ejs',{orders:result,coffeeid:result.coffeeid,quantity:'7'});//获取订单的路径:
app.get('/orders',function(req, res) {
// fetch all orders and display it to view
});
按咖啡ID显示订单编辑页的路线:
app.get('/orders/:coffeeid',function(req, res) {
var coffeeid= req.params.coffeeid;
db.collection('orders').find({_id:coffeeid}).toArray,function(error,result){
if(!error && result){
return res.render('orders.ejs',{orders:result,coffeeid:result.coffeeid, quantity:'7'});
}
});
});
表格:
<form action="/orders/<%=coffeeid%>" method="POST">
<input name="_method" type="hidden" value="PUT">
<input type="text" placeholder="username" name="username">
<input type="text" placeholder="coffee name" name="name">
<input type="number" placeholder="amount" name="amount" value="">
<input type="number" placeholder="quantity" name="quantity" value="<%=quantity%>">
<button type="submit" id="order" >Submit</button>
</form>
表单变为空,但如果我刷新页面,结果就在那里。然后,我也在数据库中看到我的订单集合中的项目,它没有到达app.put('/orders/:coffeeid/:quantity',function(req,res){…}参考错误:视图/订单。ejs:21 19 | 20 |>>21 |咖啡ID未定义似乎大致正确。我回到电脑前会检查并接受您的答案。谢谢。
app.put('/orders/:coffeeid', function(req, res) {
var coffeeid= req.params.coffeeid;
var quantity= req.body.quantity;
// save to database
}