2016-08-21 96 views
2

我使用AsyncStorage来存储一些Firebase用户数据。反应原生AsyncStorage firebase JSON值'<null>'类型NSNull不能转换为NSString

AsyncStorage.setItem('firebaseUser', JSON.stringify(data)) 

阵营本地与下面的错误吹起来,当我尝试检索数据

AsyncStorage.getItem('firebaseUser') 

JSON值 '类型' NSNull不能转换到的NSString + [RCTConvert的NSString: ] + 226 RCTConvert.m:56

似乎火力地堡回来与一些null数据(displayNamephotoUrl等)不确定它是否相关。

版本:

"react-native": "^0.31.0", 
"firebase": "^3.3.0", 

更新: 我居然把范围缩小到火力地堡模块使用AsyncStorage来存储自己的数据。当发生这种情况时,我收到JSON <null>错误。当我清除AsyncStorage时,它再次起作用。这里的火力地堡数据对象的样子:

"{ 
    "uid": "XwsK2", 
    "displayName": null, 
    "photoURL": null, 
    "email": "[email protected]", 
    "emailVerified": false, 
    "isAnonymous": false, 
    "providerData": [ 
    { 
     "uid": "[email protected]", 
     "displayName": null, 
     "photoURL": null, 
     "email": "[email protected]", 
     "providerId": "password" 
    } 
    ], 
    "apiKey": "xLxzuyPlUqA88kEfy", 
    "appName": "[DEFAULT]", 
    "authDomain": "abc.firebaseapp.com", 
    "stsTokenManager": { 
    "apiKey": "xLxzuyPlUqA88kEfy", 
    "refreshToken": "AJiUa4Y7b", 
    "accessToken": "eyJhbGciOiJSUzjQzYzU3Nzk5NGVmNGNiy_DlQ8xQO7kq3YXxgntE9Q8YJA", 
    "expirationTime": 1472098951672 
    }, 
    "redirectEventId": null 
}" 
+0

AsyncStorage可以处理的对象空字段就好了,这是不是这里的问题。也许在这里粘贴串联的'data'对象以便于调试? – jevakallio

+0

@jevakallio,我增加了一些细节。感谢您的支持! – manni

+0

我看到的代码中没有任何明显的错误,害怕我不能有任何帮助。祝你好运! :) – jevakallio

回答

3

AsyncStorage希望你给它调用setItemstring,但你给它一个对象。字符串化尝试的火力点数据保存它之前:

AsyncStorage.setItem('firebaseUser', JSON.stringify(data)); 

和解析它,当你读回:

AsyncStorage.getItem('firebaseUser').then(data => data ? JSON.parse(data) : null); 
+0

我实际上正在对它进行字符串化。否则它根本不会保存。我修改了这个问题来反映这一点。 – manni

相关问题