Добавить в json с помощью узла

Я пытаюсь добавить некоторую информацию в полученный ответ json. Но не похоже, что я могу отправлять информацию в объект DISPLAY, который я получаю.

Я получаю такую ​​ошибку. ReferenceError: DISPLAY не определен Попытка нажать на fbResponse тоже не работает.

readCoin: function(myDB, url, connection) {
    console.log("URL: ", url);
    request(url, (error, response, body)=> {
  if (!error && response.statusCode === 200) {
    var fbResponse = JSON.parse(body);
    console.log("Got a response: ", fbResponse);
    //fbResponse[DISPLAY].push({ test: "testinfo"}); Fails here

Информация об объекте

testSetInt.js:9
_id:ObjectID {_bsontype: "ObjectID", id: Buffer(12)}
DISPLAY:Object {BTC: Object, ETH: Object, XRP: Object, …}
 ADA:Object {USD: Object, EUR: Object, SEK: Object}
 BCH:Object {USD: Object, EUR: Object, SEK: Object}
 BTC:Object {USD: Object, EUR: Object, SEK: Object}

Поскольку DISPLAY не является переменной, вам нужны одинарные кавычки. fbResponse['DISPLAY'].push({ test: "testinfo"});

Kavindra 11.04.2018 11:41

Ваш объект шоу DISPLAY, поэтому вы не можете использовать метод push! Думаю можно использовать как fbResponse[DISPLAY]['test']= "testinfo";

David Jaw Hpan 11.04.2018 12:07
0
2
113
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

fbResponse[DISPLAY].push({ test: "testinfo"}); завершится ошибкой, потому что DISPLAY будет интерпретироваться как переменная. Вместо этого заключите DISPLAY в кавычки: fbResponse["DISPLAY"].push({ test: "testinfo"});.

Или используйте более простой синтаксис:

fbResponse.DISPLAY.push({ test: "testinfo"})

Если вы хотите использовать DISPLAY как переменная, вы должны определить его

let DISPLAY = "DISPLAY";

fbResponse[DISPLAY].push({ test: "testinfo"});

Это тоже не работает. Object {RAW: Object, DISPLAY: Object} testSetInt.js: 9 TypeError: fbResponse.DISPLAY.push не является функцией

user2130951 11.04.2018 11:57

Хорошо, если DISPLAY - это объект, у него не будет метода push. Вы либо меняете формат ответа с сервера, чтобы получить массив, если хотите использовать push, либо используйте Object.assign

Tnc Andrei 11.04.2018 12:05

разве это не возвращает правильный объект? var fbResponse = JSON.parse (тело);

user2130951 11.04.2018 12:06

Да, это так, но вы пытались использовать push, который является специфичным для массива методом для объекта. Таким образом, вы можете использовать Object.assign(fbResponse[DISPLAY], { test: "testinfo"}) или fbResponse [DISPLAY] ['test'] = "testinfo"; как предложил @David JorHpan.

Tnc Andrei 11.04.2018 12:16

Другие вопросы по теме