как я могу позвонить PUT после GET в Express - PullRequest
0 голосов
/ 04 октября 2019

Запрос GET, затем PUT в Postman работает, как и ожидалось, хотя я не вижу, как программно сделать это в узле.

пример:

Запрос GET localhost: 3000 / orders / Asiaвозвращает 50 акций

Запрос PUT localhost: 3000 / orders / Asia / 40 возвращает 10

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});
}

  })
})

Как программно вызвать update после "получения" стоимости акций из get?

Спасибо

1 Ответ

0 голосов
/ 04 октября 2019

Если я правильно понимаю, ответ будет вместо объявления анонимной функции для запроса PUT, вы можете сделать это `

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)

` postman PUT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...