Разбор через ответ JSON - React Native - PullRequest
0 голосов
/ 17 октября 2019

Извините за новый вопрос, но я не уверен, что я делаю здесь неправильно. У меня есть возвращенная строка JSON из Firebase:

{ 
   "user":{ 
      "uid":"kjsahdfkpa9asjdf",
      "displayName":null,
      "photoURL":null,
      "email":"test12@test.com",
      "emailVerified":false,
      "phoneNumber":null,
      "isAnonymous":false,
      "tenantId":null,
      "providerData":[  ],
      "apiKey":"asjdf;lkajd;lkfj;laV0",
      "appName":"[DEFAULT]",
      "authDomain":"test.firebaseapp.com",
      "stsTokenManager":{ 
         "apiKey":"Aalskfdeeee9V0",
         "refreshToken":"Aalskdf;lakdfjdjbA",
         "accessToken":"eyJaslkdjf;akldfhg",
         "expirationTime":q48r894q7qq4
      },
      "redirectEventId":null,
      "lastLoginAt":"q8437508234",
      "createdAt":"34534522"
   },
   "credential":null,
   "additionalUserInfo":{ 
      "providerId":"password",
      "isNewUser":true
   },
   "operationType":"signIn"
}

Почему я не могу просто извлечь значение apiKey, выполнив:

const response = await config.loginViaRedux(user); //this is what returns the JSON string
const apiKey = response[0].user.stsTokenManager.apiKey;

1 Ответ

0 голосов
/ 17 октября 2019

Вы принимаете ответ как массив, но это объект. Я прочитал вышеупомянутые комментарии, так что я думаю, что вам следует подождать, пока загрузится объект ответа. Поэтому, пожалуйста, попробуйте этот подход и посмотрите, поможет ли он:

const response = await config.loginViaRedux(user);
let apiKey = "";
if(response && response.user && response.user.stsTokenManager){
apiKey = response.user.stsTokenManager.apiKey;
}

console.log(apiKey,'apikey')
...