使用React Native Firebase Firestore存储服务器时间戳报错求助
解决React Native Firebase Firestore Server Timestamp序列化错误
这个问题我之前帮开发者排查过,本质是React Native环境下Firestore的FieldValue对象没有被正确序列化导致的,下面是具体的解决步骤:
1. 确保使用React Native Firebase专属的Firestore包
你可能不小心混用了Web版Firebase SDK和React Native Firebase SDK,后者是专门为RN原生环境适配的。如果还没安装,先执行安装命令:
# npm npm install @react-native-firebase/firestore # yarn yarn add @react-native-firebase/firestore
2. 调整导入和代码逻辑
把原来从通用firebase导入的方式,改成从@react-native-firebase/firestore导入,这样获取的FieldValue是RN环境兼容的版本:
// 导入react-native-firebase的firestore模块 import firestore from '@react-native-firebase/firestore'; // 构造数据时使用适配后的FieldValue const data = { userid: this.props.user.id, created_at: firestore.FieldValue.serverTimestamp() }; // 添加数据的逻辑也改用react-native-firebase的实例 firestore().collection('users').add(data) .then(docRef => { alert('Successfully sent friend request!'); }) .catch(error => { alert(error); });
为什么会出现这个错误?
Web版Firebase的FieldValue.serverTimestamp()返回的对象,在React Native的原生层(Android/iOS)无法被正确序列化解析,而React Native Firebase封装的FieldValue是专门针对原生SDK做了适配的,能被Firestore的原生客户端正确识别处理。
如果之前你同时安装了通用firebase包和react-native-firebase包,建议移除通用版,避免SDK冲突:
npm uninstall firebase # 或者 yarn remove firebase
内容的提问来源于stack exchange,提问作者Usama Azam
相关产品推荐
相关产品推荐

