网站搜索

TypeScript 中的 Firebase 管理与数据库


我正在使用 Firebase 的管理员 SDK。它还提供以管理员身份使用 Firebase 数据库的功能。

创建的 Firebase 管理应用的类型定义如下所示:

import * as firebaseAdmin from 'firebase-admin';

export type FirebaseContext = {
  firebaseAdmin: firebaseAdmin.app.App;
};

到目前为止,它运行良好。然而,如果我使用 Firebase 的 TIMESTAMP 功能,它会抛出类型错误:

firebaseAdmin.database.ServerValue.TIMESTAMP

// Property 'ServerValue' does not exist on type '(url?: string | undefined) => Database'.ts(2339)

应该说明的是,firebaseAdmin 实例是作为函数的参数传入的,因此它被定义为之前的 FirebaseContext.firebaseAdmin。

那么,我在之前的类型定义上做错了吗?因为,如果我不通过函数的参数传递 firebase 实例,而是直接从它的模块导入,它就不会对类型定义报错。所以一定是 type FirebaseContext 有问题。

感谢你的时间和帮助。

答案#1

据我所见,你现在正试图从一个 FirebaseApp 实例中获取 database.ServerValue.TIMESTAMP 对象。但该对象实际上是在全局 firebase 上定义的,而不是在应用实例上。所以你需要显式地导入 firebase/admin,然后在 它 上调用 database.ServerValue.TIMESTAMP,即 firebase.database.ServerValue.TIMESTAMP 或 admin.database.ServerValue.TIMESTAMP。