React Native Firestore 时间戳为空

Posted

技术标签:

【中文标题】React Native Firestore 时间戳为空【英文标题】:React Native firestore timestamp is null 【发布时间】:2019-06-21 02:58:05 【问题描述】:

我遇到了一个奇怪的问题。所以我将 React Native 与 Firebase 结合使用。直到最近我都没有问题,但今天我遇到了时间戳变为空的错误。

这是它在我的 Firebase 控制台中的样子:

这是连接到同一个 Firebase Firestore 的 React.js Web 应用程序的外观:

但是,当我在我的 React Native 应用程序上进行远程调试时,这会被注销:

我真的没有任何相关的代码 sn-p 可以发布,因为在 Web 应用程序和 React Native 应用程序上,我只是从 Firestore 获取数据,然后将它们添加到我的 Redux 存储中。没有其他任何花哨或特别的东西。

【问题讨论】:

我遇到了同样的问题,使用react-native-firebase。它工作正常,然后我升级到版本 5.2.2,突然所有时间戳都为空。 【参考方案1】:

我通过将我的 Firebase/CoreFirebase/Firestore 依赖项从 5.16 降级到 5.15(无论如何都是 React Native Firebase’s installation guide 推荐的版本)解决了这个问题。

以下是对我有用的步骤:

    假设您使用的是 CocoaPods,请将您的 Podfile 更改为:

    pod 'Firebase/Core', '~> 5.15.0'
    pod 'Firebase/Firestore', '~> 5.15.0'
    

    (同时确保更新任何其他 Firebase/* pod 的版本。)

    从您的 ios/ 文件夹中,运行 pod install

    在 XCode 中重新启动您的项目(或在命令行中使用 react-native run-ios

【讨论】:

这是对的。我在网上研究了一段时间后找到了解决方案,但忘了回来记录它。【参考方案2】:

您最近是否升级了 Firebase SDK? Firebase Firestore 最近进行了更改,以便 Firestore 回读 Firebase Timestamp 对象而不是系统日期对象。

来自 Firebase 的 SDK 警告

/** So you will also
need to update code expecting a Date to instead expect a Timestamp. For example:*/

  // Old:
  const date = snapshot.get('created_at');
  // New:
  const timestamp = snapshot.get('created_at');
  const date = timestamp.toDate();

【讨论】:

以上是关于React Native Firestore 时间戳为空的主要内容,如果未能解决你的问题,请参考以下文章

Cloud Firestore 是不是支持 React Native

React Native Firebase Cloud Firestore

React Native Firestore 时间戳为空

无法从 React-Native-Firebase(v6) Firestore 获取数据:未定义不是函数(靠近 '...this._firestore.native.collectionGet...'

React Native to firestore:Firestore(8.2.1):连接WebChannel传输错误

React Native重复超时将集合写入firestore@firebase/firestore:Firestore(8.4.2):连接WebChannel传输错误