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。