Cloud Firestore在线状态实现中Realtime Database触发器路径里的UID来源疑问
Cloud Firestore在线状态实现中Realtime Database触发器路径里的UID来源疑问
嘿,我来帮你把这个点捋清楚!其实这个{uid}是Firebase Cloud Functions里的路径通配符,不是从某个地方“获取”的具体值,而是一个占位符——它代表/status/节点下的任意子节点名称。
当Realtime Database里的某个具体用户状态节点(比如/status/user_12345)发生更新时,这个触发器就会被触发,同时Firebase会自动把通配符位置的实际值(也就是这里的user_12345)解析出来,存到函数的context参数里。
你看代码里的函数签名:
async (change, context) => {...etc...}
在这个函数内部,你只需要通过context.params.uid就能拿到当前触发事件对应的用户ID。比如刚才的例子里,context.params.uid的值就是user_12345。
这个设计的好处是,你不用为每个用户单独写一个触发器,只需要这一个带通配符的触发器,就能监听所有用户的/status/{uid}节点的变化,完美适配在线状态方案里每个用户单独存状态的需求。
我明白你盯着文档看了三个小时没搞懂,这个通配符的说明有时候藏在Cloud Functions的基础文档里,容易被忽略,不过搞清楚之后就会发现其实很简单啦!
备注:内容来源于stack exchange,提问作者Mohammed Hamdan
相关产品推荐
相关产品推荐

