Ошибка типа: невозможно прочитать свойство 'DASH' из неопределенного - PullRequest
0 голосов
/ 11 мая 2019

В моем текущем проекте я хотел бы отобразить некоторые данные (криптостатистика).Вызывая API, я получаю рабочий ответ.

Моя среда:

Узел: 8.9.5, Экспресс: 4.16.4, Angular CLI: 7.3.6, Машинопись: 3.2.4, OS: Дарвин x64

Вот мой код:

const express = require('express')
const bodyParser = require('body-parser')
const request = require('request')
const cors = require('cors')

// Create an express app
const app = express()

// Error-fix: Cross-Origin
app.use(cors())

ticker = "DASH";

// Define a default route handler for the Node app
app.get('/getDetails', (req, res) => {
    let options = {
        'url': 'https://api-call-something.io/',
        'formData': {"access-token": "xxxxx-xxxxx-xxxxx", "ticker": ticker},
        'method': "POST"
    }; 

    request(options).pipe(res);
})

Это мой ответ:

ОТВЕТ:

{
    "success": true,
    "message": {
        "DASH": {
            "semantic_version": "0.12.3.3",
            "last_block": 982197,
            "block_age": 446554,
            "statuses": {
                "ENABLED": 4898,
                "SENTINEL_PING_EXPIRED": 11,
                "NEW_START_REQUIRED": 46,
                "UPDATE_REQUIRED": 60,
                "PRE_ENABLED": 1,
                "POSE_BAN": 1
            },
            "usd_price": 111.50325810328,
            "btc_price": "0.02107716",
            "change_24h": -2.42056,
            "roi": 6.77475551,
            "collateral": 1000,
            "payout_sum_daily": "909.11649250",
            "payout_count_daily": 543,
            "payout_period": 779350.464,
            "daily_income": {
                "coin": 0.1856,
                "btc": "0.00391213",
                "usd": 20.6961
            }
        }
    }
}

Когда я пытаюсьдля доступа к значению usd_price я получаю сообщение об ошибке:

app.get('/getDetails', (req, res) => {
    let options = {
        'url': 'https://api-call-something.io/',
        'formData': {"access-token": "xxxxx-xxxxx-xxxxx", "ticker": ticker},
        'method': "POST"
    };

    request(options).pipe(res);

    usd = res.message['DASH'].usd_price;

    console.log(usd);
    console.log(res);
})
TypeError: Cannot read property 'DASH' of undefined

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

Вы имели в виду pipe res в запросе?Чего вы пытаетесь достичь, делая это?

pipe используется для таких вещей, как загрузка файлов или отправка необработанных данных в API, что, я думаю, вам не нужно, поскольку вы уже отправляете formData.

Попробуйте изменить код на это:

app.get('/getDetails', (req, res) => {
    let options = {
        'url': 'https://api-call-something.io/',
        'formData': {"access-token": "xxxxx-xxxxx-xxxxx", "ticker": ticker},
        'method': "POST"
    };

    // Call request and handle response in callback
    request(options, (err, response, body) => {
      if (err || response.statusCode !== 200) {
        console.log(err);
        res.status(response.statusCode).send(err.message);
        return
      }
      const usd = body.message.DASH.usd_price;

      console.log(usd);

      // Send whatever response you want
      res.send(usd)
    })
})
0 голосов
/ 12 мая 2019

Используйте этот метод:

    let message = res['message'];
    let dash = Object.keys(message)[0];
    let jsonObject: any = message[dash];
    console.log("USD Price: " + jsonObject['usd_price']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...