Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

231
Visualizações
¿Cómo hacer una lógica compleja en una cláusula Promise `then`? La sintaxis de solicitud-promesa en sí parece problemática

Estoy ejecutando mi código javascript con node.js y estoy usando la biblioteca de solicitud y promesa para generar solicitudes https que devuelven un json blob. Hasta ahora, he logrado enviar la solicitud correctamente, y recibo el objeto json deseado en la respuesta, pero solo veo las claves, no los valores. Quiero extraer el valor de una clave llamada "call_count". El problema al que me enfrento es la estructura peculiar de la sintaxis de solicitud-promesa , que parece impedirme hacer lo que quiero hacer.

Así es como se ve la respuesta JSON cuando ejecuto mi consulta en Postman:

 { "metric_data": { "from": "2021-12-12T23:56:12+00:00", "to": "2021-12-13T00:26:12+00:00", "metrics_not_found": [], "metrics_found": [ "Mobile/Crash/All" ], "metrics": [ { "name": "Mobile/Crash/All", "timeslices": [ { "from": "2021-12-12T23:53:00+00:00", "to": "2021-12-13T00:23:00+00:00", "values": { "call_count": 0 } } ] } ] } }

Y aquí está mi código que genera la solicitud:

 const rp = require ('request-promise'); let options = { method: 'GET', uri: 'https://api.crashCatcher.com/v2/mobile_applications/myAppID/metrics/data.json?names=Mobile/Crash/All&values[]=call_count&summarize=true', headers: { 'User-Agent': 'request-promise', 'X-Api-Key': 'MY API key goes here' }, json: true // Automatically parses the JSON string in the response }; rp(options).then(body => console.log(body)).catch(err => console.log(err.name, err.statusCode));

Actualmente, cuando ejecuto este código, esto es lo que obtengo:

 { metric_data: { from: '2021-12-13T00:22:04+00:00', to: '2021-12-13T00:52:04+00:00', metrics_not_found: [], metrics_found: [ 'Mobile/Crash/All' ], metrics: [ [Object] ] } }

Ahora, sé que estoy recuperando un objeto JSON, y sé que necesito hacer algo como:

 var myJson = JSON.parse(*body*);

Y luego algo como:

 console.log(myJson.metric_data.metrics[0].timeslices[0].values.call_count);

Pero cuando uso la sintaxis de solicitud-promesa , no sé cómo asignar correctamente lo que regresa en mi cuerpo de respuesta a una variable que luego puedo JSON. analizar y extraer el valor de call_count necesario.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

No está limitado a usar funciones de flecha, e incluso las funciones de flecha pueden tener cuerpos de función completos.

Por ejemplo:

 rp(options).then( body => { let myJson = JSON.parse(body); console.log(myJson.metric_data.metrics[0].timeslices[0].values.call_count); } ).catch(err => console.log(err.name, err.statusCode));

o:

 rp(options).then( function (body) { let myJson = JSON.parse(body) console.log(myJson.metric_data.metrics[0].timeslices[0].values.call_count) } ).catch(err => console.log(err.name, err.statusCode));

o incluso:

 function handleResponse (body) { let myJson = JSON.parse(body) console.log(myJson.metric_data.metrics[0].timeslices[0].values.call_count) } rp(options).then(handleResponse).catch(err => console.log(err.name, err.statusCode));

o incluso:

 const handleResponse = body => { let myJson = JSON.parse(body); console.log(myJson.metric_data.metrics[0].timeslices[0].values.call_count); } rp(options).then(handleResponse).catch(err => console.log(err.name, err.statusCode));
about 4 years ago · Juan Pablo Isaza Relatório

0

Entonces, la solución fue eliminar json: true en mis opciones. Una vez hecho esto, ¡todas las soluciones enumeradas amablemente por Iñigo funcionaron! ¡Gracias de nuevo por la ayuda! Esta fue una gran experiencia de aprendizaje.

 let options = { method: 'GET', uri: 'https://api.crashCatcher.com/v2/mobile_applications/960867101/metrics/data.json?names=Mobile/Crash/All&values[]=call_count&summarize=true', headers: { 'User-Agent': 'request-promise', 'X-Api-Key': 'My API key' } };
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda