反应本机异步存储火库 JSON 值 NSNull 类型的 '<null>' 无法转换为 NSString



我使用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);

相关内容

最新更新