typescript - React Native 客户端和管理节点服务器上的 FirebaseFirestore.Timestamp 与 firebase.firestore.Timestamp
问题描述
我正在尝试解决一个看起来应该很容易解决的问题,但我在文档中找不到任何关于它的内容,而且似乎没有任何关于它的问题。
我正在使用 React Native 构建一个应用程序,我们在其中创建与该应用程序相关的各种文档,并将这些文档发送到运行 Express 服务器的 Firebase 函数,该服务器使用 node@10 的 Admin SDK 连接到 Firestore。我的问题是试图找到一些合理的方式来表示日期,而不必每次都来回转换所有内容,因为我的文档/子文档中有很多日期字段。import * as firebase from firebase
我在这里初始化 react native firebase 连接firebase.initializeApp(...config)
。此库的 Timestamp 对象的类型为firebase.firestore.Timestamp
。同时,在我的服务器上,我使用import * as admin from 'firebase-admin'
和 admin.initializeApp(credential, ...config)
. 在这里,Timestamp 的类型是 FirebaseFirestore.Timestamp,并且来自 google-api 库,而不是 firestore 库。然后,当我将具有这种类型的对象从服务器发送到客户端时,或者相反,打字稿编译失败,因为这两种类型不兼容。
我最近尝试这样做是使用该Date
对象,但是当我将其发送到 Firestore 时,它会自动将其转换为一个FirebaseFirestore.Timestamp
对象,这使我回到了我最初的问题,即在我输入检查之前不想手动转换每个对象(在 REST API 的每一端)。
关于如何解决此问题的任何提示或提示?我知道我在这里没有可重现的示例,但我并不真正认为需要它,因为它更多的是类型问题而不是实际编程。
谢谢你的帮助!
(因此我也不能使用@firebase/testing
's initializeTestApp()
,因为 FirebaseFirestore.Firestore 和 firebase.firestore.Firestore 是两种不同的类型,我不知道这是否与此错误属于同一类别。)
解决方案
这个问题的答案和我希望的一样简单(害怕)。我只是在一个单独的地方定义了我的接口,并希望这些类型能够合作,但是相反,我需要为不同的类型声明两个单独的接口Timestamp
:
客户端:
TimestampedValue.ts
import * as firebase from 'firebase';
export interface TimestampedValue {
value: string;
time: firebase.firestore.Timestamp;
}
服务器端:
Timestampedvalue.ts
import * as admin from 'firebase-admin';
export interface TimestampedValue {
value: string;
time: admin.firestore.Timestamp;
}
这至少对我有帮助!
推荐阅读
- html - 关键帧开始时意外下降
- python - 从 Windows 应用程序拦截文件路径
- java - Java:如何从第二种方法中获取变量以在第三种方法中工作?
- apache-kafka - 使用 @KafkaListener 和侦听器 ack-mode 设置为记录的 Spring Kafka 轮询
- amazon-web-services - 如何从 VSCode 更新我的 AWS Lambda 函数?
- python - 在scrapy中写一个蜘蛛,但是为什么'yield item'不能在嵌套的for循环中工作?
- javascript - 将选项传递给全局注册的 vuejs 组件
- python - Python 3 lxml.Objectify
- java - 如何修复操作 switch 语句
- excel - 我想用 VBA 声明和创建一个用户表单