Firebase实时数据库创建一种模拟多租户设计的方法

44u64gxh  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(159)

我们已经建立了一个分析应用程序,可以为我们的客户捕获数据。这个想法是为每个客户在firebase db中创建一个节点,并在该节点中保存所有捕获的数据。
这个想法适用于实时数据库,因为我们可以在客户端的所有firebase数据库操作中添加客户名称。
firebase函数出现问题。例如,其中一个函数看起来像:

exports.on_new_message = functions.database.ref(orgName + "/messages/{id}")
    .onCreate(async(snapshot, context) => {
        console.log("start of on_new_message ")   
        const message = snapshot.val();
 })

在这种情况下,此时对orgName进行硬编码。而且我们不确定如何以不需要指定根节点的方式来泛化它。为了快速参考,数据可能看起来像

orgA
   --messages
      ---
      ---
   --stats
     --
     --
 orgB
    --messages
      ---
      ---
   --stats
     --
     --

如果上述架构听起来很愚蠢,那么请建议正确的方式

nmpmafwu

nmpmafwu1#

路径中可以有多个通配符,请参见https://firebase.google.com/docs/reference/functions/functions.database#.ref
所以你可以

exports.on_new_message = functions.database.ref("{orgName}/messages/{id}")
    .onCreate(async(snapshot, context) => {
        console.log("start of on_new_message ");   
        const message = snapshot.val();

        const orgName = context.params.orgName;
        const messageId = context.params.id;

        //....     

 })

相关问题