Node.js Firebase实时数据库创建模拟多租户设计的方法

Node.js Firebase实时数据库创建模拟多租户设计的方法,node.js,firebase,firebase-realtime-database,google-cloud-functions,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,我们已经构建了一个分析应用程序,它将为我们的客户捕获数据。其想法是为每个客户在firebase db中创建一个节点,并将其捕获的所有数据都放在该节点中 这个想法对于实时数据库非常有效,因为我们可以在客户端的所有firebase DB操作中预先输入客户名称 问题在于firebase函数。例如,其中一个函数如下所示: exports.on_new_message = functions.database.ref(orgName + "/messages/{id}") .onCreate(a

我们已经构建了一个分析应用程序,它将为我们的客户捕获数据。其想法是为每个客户在firebase db中创建一个节点,并将其捕获的所有数据都放在该节点中

这个想法对于实时数据库非常有效,因为我们可以在客户端的所有firebase DB操作中预先输入客户名称

问题在于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
     --
     --


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

您可以在路径中使用多个通配符,请参阅

所以你可以

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;

        //....     

 })

你能给出更多的细节(也许是一个具体的例子)关于你想要触发你的云功能的路径吗?所以路径应该是orgA/客户orgA的消息和orgB/客户orgB的消息。这有用吗?是的,更清楚,谢谢。你的问题是什么?我的意思是你为什么不直接做
functions.database.ref(“{orgId}/messages/{id}”)
?我想这可能行得通,但不确定,我们没有足够的开发来测试它。那么我如何在这些动态节点上定义索引呢?@moblizet我建议你问一个新的so问题。