0
votes

Demandant des informations d'une API via Node.js

J'espère que vous pourriez avoir pu m'aider s'il vous plaît dehors, je cours nœud.js et essaye d'obtenir un nom de ville à partir d'une API et qu'il conserve une erreur en disant qu'il ne peut pas lire la propriété city_name de non défini.

Il est bloqué sur cette ligne dans le code: xxx elfe ? S'il vous plaît xxx


0 commentaires

3 Réponses :


0
votes

J'ai essayé de frapper l'API et la réponse: xxx

EDIT:
Je ne fais pas votre code dans l'application avant, j'essaie par navigateur de
Ceci est mycode xxx

météo.data est un tableau, donc lorsque vous essayez l'accès météo.data.city_name être indéfini. Vous devez accéder à temps météo.data [0] .City_name .


2 commentaires

J'ai essayé cela et cela vient toujours avec la même erreur. const cityname = weatherdata.data [0] .City_name; ^ TypeError: Impossible de lire la propriété '0' de non définie


Désolé, j'ai essayé vos données du navigateur, pas du code de l'application, je vais essayer dans le code de la demande



0
votes

Vos données sont une chaîne et donc ne dispose pas de ces propriétés. Vous auriez besoin de JSON.PARSE CODE> IT PREMIER.

Mais il y a un autre problème, votre code va casser dès que plus de données sont renvoyées, car vous n'écoutez que pour une seule partie de données. Vous devez ajouter tous les morceaux (Ajouter aux morceaux existants sur chaque Data ​​CODE> Event) et traiter les données complètes sur l'événement code> fin code>. P>

mais En général, la méthode https.get code> est très nue, il sera beaucoup plus simple d'utiliser un package comme NODE-FETCH code> : P>

// Creating the server of the weather app
const express = require('express');
const app = express();

const fetch = require('node-fetch')

app.get('/', (req, res) => {
    const weatherPath = "https://api.weatherbit.io/v2.0/current?key=41c0f84d717a4764a26d144aa33a9443&city=melbourne,Australia"

    // Calling the weather app 
    fetch(weatherPath)
      .then(response => response.json())
      .then(weatherData => {
        // Getting the data from the weather app 
        const cityName = weatherData.data[0].city_name;
        console.log(cityName); 
      }).catch(e => {
        console.error('An error occured!', e);
      });

    res.send("The server is up and running on the web");
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});


1 commentaires

Incroyable! Merci pour ça. A du sens maintenant. J'ai converti les données en une chaîne si dans la ligne de commande, elle ressemblait à un JSON. Juste besoin de convertir correctement. Merci pour la pointe sur le nœud de récupération, devez-la examiner cela plus. :RÉ



0
votes

J'ai résolu avec le module de noeud d'avance utilisé communément appelé Axios

regarder Au code, P>

// Creating the server of the weather app
const express = require('express');
const app = express();
const axios = require('axios');

app.get('/', (req, res) =>
{
    //In production we do not need this
    process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0;
    const weatherPath = "https://api.weatherbit.io/v2.0/current?key=41c0f84d717a4764a26d144aa33a9443&city=melbourne,Australia";
    axios.get(weatherPath)
        .then(function (response)
        {
            // handle success
            let cityName = response.data.data[0].city_name;
            console.log(cityName);
        })
        .catch(function (error)
        {
            // handle error
            console.log(error);
        })
        .finally(function ()
        {
            // always executed
        });
    res.send("The server is up and running on the web");
});


app.listen(3000, () =>
{

    console.log('Server is running on port 3000');
});


0 commentaires