【问题标题】:Firebase - Using Firestore's FieldValueFirebase - 使用 Firestore 的 FieldValue
【发布时间】:2021-09-08 11:00:06
【问题描述】:

在模型中,我有以下内容。但是,升级到 Firebase 版本 9 后,这将不再有效。

'"/node_modules/firebase/compat/index"' 没有导出的成员 'firestore'。

import firebase from 'firebase/app';
import 'firebase/firestore';

export interface ModelTest {
    date: firebase.firestore.FieldValue | firebase.firestore.Timestamp | Date;
}

我快速浏览了文档,但还没有找到解决方案(但..)。 Firebase 有一个“兼容”模式,这显然是暂时的。为避免临时实施某些内容,是否有新的导入方式?

====

更新

这似乎有效:

import { Timestamp, FieldValue } from "firebase/firestore";

export interface ModelTest {
  date?: FieldValue | Timestamp | Date;
}

【问题讨论】:

    标签: typescript firebase google-cloud-firestore


    【解决方案1】:

    如果核心是从 compat 导入的,您还应该导入 compat 版本的 Firestore 或您正在使用的任何 Firebase 服务:

    import firebase from 'firebase/compat/app';
    import 'firebase/compat/firestore';
    // import 'firebase/compat/[SERVICE_NAME]';
    // compat version    ^^^
    

    您可以从非兼容版本显式导入FieldValue,但最好使用单一版本以保持一致性。

    【讨论】:

    • 感谢 Dharmaraj。我刚刚发布了我的问题的更新。我在文档中找到了突出显示 FieldValue 和 Timestamp 被独立导入的部分。这似乎有效。
    • 您正在明确导入它们。这就像使用两种语法......
    • 感谢您的快速回复。文档 (firebase.google.com/docs/firestore/manage-data/…) 似乎暗示这没问题。到目前为止,我使用compat 的唯一地方是AngularFire。鉴于 AngularFire 当前正在使用compat,这是否意味着任何时候使用版本 9 的 firebase(如上面的场景),那么也需要在那里使用 compat?鉴于 firebase 表示它是临时的,如果我不需要,它不会“感觉”使用 compat 正确。我的更新有负面影响吗?
    • @Que 我的意思是,如果您需要使用兼容版本只是为了将它与 AngularFire 一起使用,那么就使用它?现在您正在使用模块化结构来初始化 Firebase SDK。我不知道这是否有任何好处。
    • 啊,我明白你的意思了。在更新之前使用 AngularFire 不会有任何好处(没有摇树等)。我只是有一个安装了新版本的新项目,这比安装了旧版本并且必须更新它的新项目感觉更好。 Firebase SDK 在项目中还有其他用途。
    猜你喜欢
    • 2021-06-18
    • 2019-02-19
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2023-01-23
    • 1970-01-01
    相关资源
    最近更新 更多