我在Node.js中使用firebase函数,并尝试为其创建多个环境。据我所知,我只需要在Firebase中为它创建单独的项目,我就是这么做的。
我也在使用Flamelink,我也想实现同样的效果。实际上,我为Flamelink制定了一个允许多种环境的Bonfire计划。我担心的是,Flamelink中的不同环境写入到Firebase中的同一数据库中,只用environment标志分隔它,因此每当我想要从数据库中查询某些东西时,我也必须指定我的环境。
有没有办法通过我的设置为不同的Flamelink环境提供不同的数据库,以便我只在配置中指定environment,而不在查询中指定?
发布于 2020-08-17 17:42:20
目前使用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}`)https://stackoverflow.com/questions/63412018
复制相似问题