Wyciągnięcie zmiennej z app.post w node.js

0

Cześć,
Mam endpointa, który pobiera mi numer zamówienia od klienta :

app.post('/api/order', async function (req, res) {
        console.log("Serwer: otrzymałem obiekt: " + JSON.stringify(req.body))

        const data = req.body
        res.json({
            status: "Serwer otrzymał dane: ",
            OrderId: data.order
        })
        const IdOrder = data.order
        console.log("Numer zamówienia to: " + IdOrder)
        return IdOrder
    })

Potrzebuje użyć dalej zmiennej IdOrder w innej funkcji. Pytanie jak ją wyciągnąć?
Raczkuję w Node.js

1

Nic nie wyciągaj tylko wywołaj tą funkcję, którą chcesz wewnątrz callbacka.

0

Możesz użyć do tego middleware'a.

https://expressjs.com/en/guide/using-middleware.html

Tylko tutaj ważna jest kolejność użycia metod, bo w taki sposób, będziesz miał dostęp przed zapytaniem POST

app.use('/api/order', (req, res, next) => {
  console.log('Dostęp do wartości "req.body.order" przed żądaniem POST');
  console.log(req.body.order);

  next();
});

app.post('/api/order',  (req, res) => {
  //
});

Natomiast tak, po zapytaniu POST

app.post('/api/order',  (req, res) => {
  //
});

app.use('/api/order', (req, res, next) => {
  console.log('Dostęp do wartości "req.body.order" po żądaniu POST');
  console.log(req.body.order);

  next();
});

W zależności od tego jak chcesz tą wartość wykorzystać.

0
Saalin napisał(a):

Nic nie wyciągaj tylko wywołaj tą funkcję, którą chcesz wewnątrz callbacka.
app.post('/api/order', async function (req, res) {
console.log("Serwer: otrzymałem obiekt: " + JSON.stringify(req.body))

app.post('/api/order', async function (req, res) {
     console.log("Serwer: otrzymałem obiekt: " + JSON.stringify(req.body))

     const data = req.body
     res.json({
         status: "Serwer otrzymał dane: ",
         OrderId: data.order
     })
     const IdOrder = data.order
     console.log("Numer zamówienia to: " + IdOrder)
     jobticket()
 })



async function jobticket() {
 const OrderGroupUrl = url + IdOrder + "/" + ApiKey;
 console.log(OrderGroupUrl)
 ....
 
 }

UnhandledPromiseRejectionWarning: ReferenceError: IdOrder is not defined

2
Bart Eagle napisał(a):

UnhandledPromiseRejectionWarning: ReferenceError: IdOrder is not defined

Używasz zmiennej IdOrder, ale nigdzie jej nie przekazujesz...

async function jobticket({ url, idOrder, apiKey }) {
 const OrderGroupUrl = url + idOrder + "/" + apiKey;

 // ...
}

jobticket({ url: 'localhost:8000/zamowienie', idOrder: 300, apiKey: 'xxx' });
0
Xarviel napisał(a):
Bart Eagle napisał(a):

UnhandledPromiseRejectionWarning: ReferenceError: IdOrder is not defined

Używasz zmiennej IdOrder, ale nigdzie jej nie przekazujesz...

async function jobticket({ url, idOrder, apiKey }) {
 const OrderGroupUrl = url + idOrder + "/" + apiKey;

 // ...
}

jobticket({ url: 'localhost:8000/zamowienie', idOrder: 300, apiKey: 'xxx' });

Dzięki, to było to :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1