Async Storage returns an item from storage as a string. Next, the string is parsed to an object. When trying to get data from the object, an undefined error is returned.
const storage: any = await AsyncStorage.getItem('persist:root');
const state = JSON.parse(storage!);
console.log(state);
const a = JSON.parse(JSON.stringify(state.auth));
console.log(a); <- Normal JSON with fields "user" and "token'
console.log(a.user); <- undefined
console.log(a.token); <- undefined
const refreshToken = a.token.refreshToken; <- undefined
Variable state.auth
JSON looks like this:
{
"user":{
},
"token":{
"refreshToken":"REFRESH",
"accessToken":"ACCESS"
}
}
LOG {"_persist": "{"version":-1,"rehydrated":true}", "auth": "{"user":{"user_id":19,"email":"[email protected]","approved":false,"createdAt":"2024-01-11T07:42:33.762Z","updatedAt":"2024-01-11T07:42:33.762Z","role":{"role_id":1,"role_name":"Пользователь","createdAt":"2024-01-10T12:42:21.257Z","updatedAt":"2024-01-10T12:42:21.257Z"},"organization":{"organization_id":3,"organization_type_id":1,"organization_name":"ООО \"Компания 4\"","full_name":"ООО \"Компания 4\"","short_name":"Компания 4","register_number":"212122134","bic":"251490211","phone":"+79354944154","address":"883072, Курганская область, город Чехов, спуск Будапештсткая, 77","email":"[email protected]","ogrn":"6927890723831","inn":"0436981520","kpp":"183212273","okpo":"50235599","createdAt":"2024-01-10T12:42:23.354Z","updatedAt":"2024-01-10T12:42:23.354Z"},"person":{"person_id":19,"last_name":"Ivanov","first_name":"Ivan","patronymic":"Ivanovi3","gender":"Мужской","phone":"+79001234568","createdAt":"2024-01-11T07:42:33.760Z","updatedAt":"2024-01-11T07:42:33.760Z"},"group":null},"token":{"refreshToken":"REFRESH","accessToken":"ACCESS"}}"} LOG {"user":{"user_id":19,"email":"[email protected]","approved":false,"createdAt":"2024-01-11T07:42:33.762Z","updatedAt":"2024-01-11T07:42:33.762Z","role":{"role_id":1,"role_name":"Пользователь","createdAt":"2024-01-10T12:42:21.257Z","updatedAt":"2024-01-10T12:42:21.257Z"},"organization":{"organization_id":3,"organization_type_id":1,"organization_name":"ООО "Компания 4"","full_name":"ООО "Компания 4"","short_name":"Компания 4","register_number":"212122134","bic":"251490211","phone":"+79354944154","address":"883072, Курганская область, город Чехов, спуск Будапештсткая, 77","email":"[email protected]","ogrn":"6927890723831","inn":"0436981520","kpp":"183212273","okpo":"50235599","createdAt":"2024-01-10T12:42:23.354Z","updatedAt":"2024-01-10T12:42:23.354Z"},"person":{"person_id":19,"last_name":"Ivanov","first_name":"Ivan","patronymic":"Ivanovi3","gender":"Мужской","phone":"+79001234568","createdAt":"2024-01-11T07:42:33.760Z","updatedAt":"2024-01-11T07:42:33.760Z"},"group":null},"token":{"refreshToken":"REFRESH","accessToken":"ACCESS"}} LOG undefined LOG undefined
state
is the parsed storage
JSON string. It's an object with "_persist"
, "auth"
and "token"
keys. From here state.auth
and state.token
hold stringified JSON data, so these need to be parsed. Don't stringify and parse these values. Doing so will result in the same original single-stringified value. Just parse them.
const storage: any = await AsyncStorage.getItem('persist:root');
const state = JSON.parse(storage!);
console.log(state);
const a = JSON.parse(state.auth);
console.log(a); <- Normal JSON with fields "user" and "token'
console.log(a.user); <-- defined
console.log(a.token); <-- defined
const refreshToken = a.token.refreshToken; <-- "REFRESH"
{
"user": {
"user_id": 19,
"email": "[email protected]",
"approved": false,
"createdAt": "2024-01-11T07:42:33.762Z",
"updatedAt": "2024-01-11T07:42:33.762Z",
"role": {
"role_id": 1,
"role_name": "Пользователь",
"createdAt": "2024-01-10T12:42:21.257Z",
"updatedAt": "2024-01-10T12:42:21.257Z"
},
"organization": {
"organization_id": 3,
"organization_type_id": 1,
"organization_name": "ООО \"Компания 4\"",
"full_name": "ООО \"Компания 4\"",
"short_name": "Компания 4",
"register_number": "212122134",
"bic": "251490211",
"phone": "+79354944154",
"address": "883072, Курганская область, город Чехов, спуск Будапештсткая, 77",
"email": "[email protected]",
"ogrn": "6927890723831",
"inn": "0436981520",
"kpp": "183212273",
"okpo": "50235599",
"createdAt": "2024-01-10T12:42:23.354Z",
"updatedAt": "2024-01-10T12:42:23.354Z"
},
"person": {
"person_id": 19,
"last_name": "Ivanov",
"first_name": "Ivan",
"patronymic": "Ivanovi3",
"gender": "Мужской",
"phone": "+79001234568",
"createdAt": "2024-01-11T07:42:33.760Z",
"updatedAt": "2024-01-11T07:42:33.760Z"
},
"group": null
},
"token": {
"refreshToken": "REFRESH",
"accessToken": "ACCESS"
}
}