Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase管理员,数据库位于TypeScript中_Typescript_Firebase_Firebase Realtime Database_Firebase Admin - Fatal编程技术网

Firebase管理员,数据库位于TypeScript中

Firebase管理员,数据库位于TypeScript中,typescript,firebase,firebase-realtime-database,firebase-admin,Typescript,Firebase,Firebase Realtime Database,Firebase Admin,我正在使用Firebase的管理SDK。它还提供使用作为管理员 创建的Firebase Admin应用程序的类型定义如下所示: import * as firebaseAdmin from 'firebase-admin'; export type FirebaseContext = { firebaseAdmin: firebaseAdmin.app.App; }; 到目前为止,它运作良好。但是,如果我使用Firebase的时间戳功能,它会抛出一个类型错误: firebaseAdmin

我正在使用Firebase的管理SDK。它还提供使用作为管理员

创建的Firebase Admin应用程序的类型定义如下所示:

import * as firebaseAdmin from 'firebase-admin';

export type FirebaseContext = {
  firebaseAdmin: firebaseAdmin.app.App;
};
到目前为止,它运作良好。但是,如果我使用Firebase的
时间戳
功能,它会抛出一个类型错误:

firebaseAdmin.database.ServerValue.TIMESTAMP

// Property 'ServerValue' does not exist on type '(url?: string | undefined) => Database'.ts(2339)
应该说,
firebaseAdmin
实例作为一个函数的参数而来,因此在前面定义为
FirebaseContext.firebaseAdmin

那么,我之前的类型定义有没有做错什么?因为,如果我不通过函数的参数传递firebase实例,而是直接从其模块导入它,它不会抱怨类型定义。因此,
类型FirebaseContext
肯定有问题


感谢您的时间和帮助。

据我所知,您正在尝试从
FirebaseApp
实例获取
数据库.ServerValue.TIMESTAMP
对象。但该对象实际上是在全局
firebase
上定义的,而不是在应用程序实例上定义的。因此,您必须显式导入
firebase
/
admin
并调用
database.ServerValue.TIMESTAMP
,即
firebase.database.ServerValue.TIMESTAMP
admin.database.ServerValue.TIMESTAMP

是。我最后就是这么做的。我只是想知道我是否可以对类型做些什么,使它适合在函数中作为参数传递Firebase实例。这不是关于类型强制,而是关于您使用的实际对象。
FirebaseApp
实例有一个
database()
方法,但没有定义
ServerValue.TIMESTAMP
database
属性。现在我知道了。在Firebase实例上,数据库是一个函数,而在导入的对象上,它不是。谢谢!:)听到这个消息很高兴,罗宾。有时我想知道是否值得将(全局)值与应用程序实例值分开。我们使用的方法可以节省内存,但您肯定不是第一个落入此陷阱的人-/