Firebase 确定触发器函数中的RTDB url

Firebase 确定触发器函数中的RTDB url,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,我正在用RTDB和firestore构建一个可扩展的聊天应用程序 这是我的碎片的原始结构 SHARD1 Chats { chat01: { Info: { // some info about this chatroom }, Messages ... }, .... } SHARD2... 现在我在所有碎片的所有信息节点上都有了写触发器 我想知

我正在用RTDB和firestore构建一个可扩展的聊天应用程序

这是我的碎片的原始结构

SHARD1
    Chats {
        chat01: {
            Info: {
                // some info about this chatroom
            },
            Messages ...
       }, ....
    }
SHARD2...
现在我在所有碎片的所有信息节点上都有了写触发器

我想知道碎片的身份 我如何知道它实际运行在什么碎片上?

[编辑]

console.log(admin.app().name); // it prints "[DEFAULT]" in console

Puf和团队请帮助

当调用实时数据库触发器时,第二个参数是一个对象,其中包含有关已更新数据库和节点的信息。该对象包含一个字符串,其中包含您要查找的内容。根据该字符串的文档,其名称属性的格式为:

projects/_/instances/<databaseInstance>/refs/<databasePath>

如果您所需要的只是对更改位置的引用,那么为了在那里执行一些更改,您只需在第一个参数中传递的上使用
ref
属性,并构建一个相对于该位置的路径。

我已经解决了它。我只是错过了一件容易的事。我可以直接从变量中使用
yourShard
,并将其传递给触发器和我的代码。而且你的方法也很棒
+1
。谢谢,请使用firestore和RTDB重新登录我的可扩展聊天应用程序。除了一个问题之外,我已经删除了所有内容。请重新阅读=>
export const yourFunction = functions.database
.instance('yourShard')
.ref('yourNode')
.onCreate((snap, context) => {
    const parts = context.resource.name.split('/')
    const shard = parts[3]
    console.log(shard)
})