0

我正在使用带有 Node.js 的 firebase 函数,并且正在尝试为此创建多个环境。据我所知,我只需要在 Firebase 中为此创建单独的项目,我就这样做了。

我也在使用 Flamelink,我想达到同样的效果。我实际上有一个允许多种环境的 Flamelink 篝火计划。我担心的是,Flamelink 中的不同环境写入 Firebase 中的同一个数据库,仅用 标志分隔它environment,所以每当我想从数据库中查询某些内容时,我还必须指定我的环境。

有没有办法通过我的设置为不同的 Flamelink 环境提供不同的数据库,所以我只environment在我的配置中指定而不是在我的查询中指定?

4

1 回答 1

0

目前不可能使用 Flamelink 为每个环境创建一个数据库。实现这一点的唯一方法是将两个项目都添加到 Flamelink。

但是,Flamelink JS SDK可以在云功能中使用,并且可以减轻在多个环境中工作的一些复杂性。

Flamelink JS SDK 在初始化时会接受一个环境参数(以及其他一些参数,如语言环境和数据库类型),将 SDK 方法的使用与环境关联起来。

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import * as flamelink from 'flamelink/app';
import 'flamelink/content';

admin.initializeApp();
const firebaseApp = admin.app();

const flApp = flamelink({
  firebaseApp,
  dbType: 'cf',
  env: 'staging',
  locale: 'en-US',
});

export const testFunction = functions.https.onRequest(async(request, response) => {
  if (request.query.env) {
    flApp.settings.setEnvironment(request.query.env) // example 'production'
  }

  try {
    const posts = await flApp.content.get({ schemaKey: 'blogPosts' })
    res.status(200).json({ posts })
  } catch (e) {
    // handle error
  }
});

根据您连接的前端框架/语言,您可以使用环境变量在环境中传递

JS 客户端示例

const env = (process.env.FLAMELINK_DATA_ENV || 'staging').toLowerCase()
await fetch(`https://yourhost.cloudfunctions.net/testFunction?env=${env}`)
于 2020-08-17T09:42:20.333 回答