Node.js 我进快车后怎么打电话给PUT
请求GET然后放入Postman的工作方式与预期的一样,尽管我不知道如何在节点中以编程方式实现这一点 例如: 请求获取本地主机:3000/订单/亚洲 返回50只股票 请求放置本地主机:3000/订单/亚洲/40 返回10Node.js 我进快车后怎么打电话给PUT,node.js,mongodb,express,Node.js,Mongodb,Express,请求GET然后放入Postman的工作方式与预期的一样,尽管我不知道如何在节点中以编程方式实现这一点 例如: 请求获取本地主机:3000/订单/亚洲 返回50只股票 请求放置本地主机:3000/订单/亚洲/40 返回10 app.get('/orders/:coffeeid', function(req, res) { db.collection('coffees').find({'name': req.params.coffeeid}).toArray((err, result) =&g
app.get('/orders/:coffeeid', function(req, res) {
db.collection('coffees').find({'name': req.params.coffeeid}).toArray((err, result) => {
if (err) return res.send(500, err)
var data = {
"orders": {
"name": result.coffeeid,
"stock": result.stock
}
};
res.json(result);
})
})
app.put('/orders/:coffeeid/:quantity', function(req, res) {
db.collection('coffees').find({'name': req.params.coffeeid}).toArray((err, result) => {
if (err) return res.send(500, err)
orders = {
"name": req.params.name,
"quantity": req.params.quantity
};
console.log(result[0].stock, orders.quantity, orders.quantity <= result[0].stock) // resolvido
console.log(orders.quantity)
if (Number(orders.quantity) <= Number(result[0].stock) ) {
result[0].stock = result[0].stock - orders.quantity
db.collection('coffees').updateOne({'name': req.params.coffeeid}, result[0], function(err, result) {
console.log('Order dispached. Thank you');
res.json(result);
res.render('orders.ejs', {orders: result, success: false})
});
}
else {
console.log('There isnt enough in stock. Will dispach ASAP');
res.json({error: true});
}
})
})
app.get('/orders/:coffeeid',函数(req,res){
collection('coffee').find({'name':req.params.coffeeid}).toArray((err,result)=>{
if(err)返回res.send(500,err)
风险值数据={
“命令”:{
“名称”:result.coffeeid,
“股票”:result.stock
}
};
res.json(结果);
})
})
app.put('/orders/:coffeeid/:quantity',函数(请求、回复){
collection('coffee').find({'name':req.params.coffeeid}).toArray((err,result)=>{
if(err)返回res.send(500,err)
订单={
“名称”:请求参数名称,
“数量”:要求参数数量
};
console.log(结果[0]。stock,orders.quantity,orders.quantity如果我理解正确,答案将是,不要为PUT
请求声明匿名函数,您可以这样做
`
const whatEverYouWant=函数(req,res){
collection('coffee').find({'name':req.params.coffeeid}).toArray((err,result)=>{
if(err)返回res.send(500,err)
订单={
“名称”:请求参数名称,
“数量”:要求参数数量
};
console.log(结果[0]。stock,orders.quantity,orders.quantity如果我理解正确,在运行GET
请求之后,您正在尝试调用PUT
请求中的方法?@MatthewWeeks Yes。在这种情况下,应打印“Order dispatched.Thank you”。这两个console.log都返回未定义的console.log(结果)为你打印?也未定义..但是你的建议是,我不能调用PUT来用/coffeeid/quantity更新我的订单0。它不起作用。这个req.params.coffeeid的值是什么?为什么是nout?你可以做的是,当调用你的putRequest(req,res)时,你需要传递你的parms你的putRequest({…req,params:{coffeeid:1,quantity:1},res)
orders.quantity未定义,因为我们没有将参数变量传递到PUT函数中。req.params.coffeeid也未定义
const whatEverYouWant =function(req, res) {
db.collection('coffees').find({'name': req.params.coffeeid}).toArray((err, result) => {
if (err) return res.send(500, err)
orders = {
"name": req.params.name,
"quantity": req.params.quantity
};
console.log(result[0].stock, orders.quantity, orders.quantity <= result[0].stock) // resolvido
console.log(orders.quantity)
if (Number(orders.quantity) <= Number(result[0].stock) ) {
result[0].stock = result[0].stock - orders.quantity
db.collection('coffees').updateOne({'name': req.params.coffeeid}, result[0], function(err, result) {
console.log('Order dispached. Thank you');
res.json(result);
res.render('orders.ejs', {orders: result, success: false})
});
}
else {
console.log('There isnt enough in stock. Will dispach ASAP');
res.json({error: true});
}
})
}
app.get('/orders/:coffeeid', function(req, res) {
db.collection('coffees').find({'name': req.params.coffeeid}).toArray((err, result) => {
if (err) return res.send(500, err)
var data = {
"orders": {
"name": result.coffeeid,
"stock": result.stock
}
};
yourPutRequest(req,res) //
res.json(result);
})
})
app.put('/orders/:coffeeid/:quantity',whatEverYouWant)