Firebase 确定触发器函数中的RTDB url
我正在用RTDB和firestore构建一个可扩展的聊天应用程序 这是我的碎片的原始结构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... 现在我在所有碎片的所有信息节点上都有了写触发器 我想知
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)
})