我使用AsyncStorage
来存储一些Firebase用户数据。
AsyncStorage.setItem('firebaseUser', JSON.stringify(data))
React Native是爆炸与以下错误当我试图检索数据
AsyncStorage.getItem('firebaseUser')
JSON值"类型的NSNull不能转换为NSString+[RCTConvert NSString:] + 226 RCTConvert.m:56
似乎Firebase返回一些null
数据(displayName
, photoUrl
等)不确定它是否相关。
版本:
"react-native": "^0.31.0",
"firebase": "^3.3.0",
更新:我实际上把它缩小到Firebase模块是使用AsyncStorage
来存储自己的数据。当这种情况发生时,我得到JSON <null>
错误。当我清除AsyncStorage
,它再次工作。以下是Firebase数据对象的样子:
"{
"uid": "XwsK2",
"displayName": null,
"photoURL": null,
"email": "test@test.com",
"emailVerified": false,
"isAnonymous": false,
"providerData": [
{
"uid": "test@test.com",
"displayName": null,
"photoURL": null,
"email": "test@test.com",
"providerId": "password"
}
],
"apiKey": "xLxzuyPlUqA88kEfy",
"appName": "[DEFAULT]",
"authDomain": "abc.firebaseapp.com",
"stsTokenManager": {
"apiKey": "xLxzuyPlUqA88kEfy",
"refreshToken": "AJiUa4Y7b",
"accessToken": "eyJhbGciOiJSUzjQzYzU3Nzk5NGVmNGNiy_DlQ8xQO7kq3YXxgntE9Q8YJA",
"expirationTime": 1472098951672
},
"redirectEventId": null
}"
AsyncStorage期望您在调用setItem
时给它一个string
,但您正在给它一个对象。在保存firebase数据之前,尝试将其字符串化:
AsyncStorage.setItem('firebaseUser', JSON.stringify(data));
并在读取时进行解析:
AsyncStorage.getItem('firebaseUser').then(data => data ? JSON.parse(data) : null);