如何在Firebase云功能和Web客户端之间共享Firebase实时数据库访问逻辑?

时间:2017-09-30 15:24:42

标签: typescript firebase firebase-realtime-database

我想在使用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)
}

这是一个好方法还是应该以不同的方式构建我的代码?

0 个答案:

没有答案