我想在使用Firebase Admin SDK的Firebase云功能和使用Firebase实时数据库SDK的JavaScript Web客户端之间共享Firebase实时数据库访问逻辑。两个SDK都提供了Database
接口,其具有相同的方法但不同的TypeScript类型。如何将firebase.database.Database或admin.database.Database的实例传递给共享函数以重用数据访问逻辑?
shared.ts(没有工作)
import * as firebase from 'firebase'
import * as admin from 'firebase-admin'
export async function getGreeting(database: firebase.database.Database | admin.database.Database): Promise<string> {
const greetingRef = database.ref('/greeting')
return await greetingRef.once('value').then(snapshot => snapshot.val())
}
shared.ts(有效,但我在编辑器中失去了打字支持)
export async function getGreeting(database: any): Promise<string> {
const greetingRef = database.ref('/greeting')
return await greetingRef.once('value').then(snapshot => snapshot.val())
}
管理员-云function.ts
import * as admin from 'firebase-admin'
import * as shared from './shared'
async function greet() {
let greeting = await shared.getGreeting(admin.database())
console.log(greeting)
}
网络client.ts
import * as firebase from 'firebase'
import * as shared from './shared'
async function greet() {
let greeting = await shared.getGreeting(firebase.database())
console.log(greeting)
}
这是一个好方法还是应该以不同的方式构建我的代码?