响应NSNull类型的本机AsyncStorage firebase JSON值'<null>'无法转换为NSString

man*_*nni 3 firebase react-native firebase-authentication

AsyncStorage用来存储一些Firebase用户数据.

AsyncStorage.setItem('firebaseUser', JSON.stringify(data))
Run Code Online (Sandbox Code Playgroud)

当我尝试检索数据时,React Native会出现以下错误

AsyncStorage.getItem('firebaseUser')
Run Code Online (Sandbox Code Playgroud)

NSNull类型的JSON值''无法转换为NSString + [RCTConvert NSString:] + 226 RCTConvert.m:56

看来,火力地堡回来一些null数据(displayName,photoUrl等)不知道,如果是相关的.

版本:

"react-native": "^0.31.0",
"firebase": "^3.3.0",
Run Code Online (Sandbox Code Playgroud)

更新:我实际上将其缩小到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
}"
Run Code Online (Sandbox Code Playgroud)

jev*_*lio 5

AsyncStorage希望你string在调用时给它一个setItem,但你给它一个对象.在保存之前尝试对firebase数据进行字符串化:

AsyncStorage.setItem('firebaseUser', JSON.stringify(data));
Run Code Online (Sandbox Code Playgroud)

并在阅读时解析它:

AsyncStorage.getItem('firebaseUser').then(data => data ? JSON.parse(data) : null);
Run Code Online (Sandbox Code Playgroud)