在下面的示例中,有没有办法获取写入/ messages / / original的用户的uid?
exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
.onWrite(event => {
// Grab the current value of what was written to the Realtime Database.
const original = event.data.val();
console.log('Uppercasing', event.params.pushId, original);
const uppercase = original.toUpperCase();
// You must return a Promise when performing asynchronous tasks inside a Functions such as
// writing to the Firebase Realtime Database.
// Setting an "uppercase" sibling in the Realtime Database returns a Promise.
return event.data.ref.parent.child('uppercase').set(uppercase);
});
2 回答
自从Firebase功能达到1.0版本以来,此行为不再是未记录的,但已经轻微改变 . 一定要阅读the docs .
已将上下文添加到 Cloud 功能中,您可以像这样使用它
是的,这在技术上是可行的,尽管目前尚未记录 .
uid
与event.auth
对象一起存储 . 从管理员情境(例如,从Firebase控制台数据查看器或管理SDK)触发数据库 Cloud 功能时,event.auth
的值为:从未经身份验证的引用触发数据库 Cloud 功能时,
event.data
的值为:最后,当从authed而不是admin引用触发数据库 Cloud 功能时,
event.auth
的格式为:鉴于上述信息,获得触发事件的用户
uid
的最佳选择是执行以下操作:请注意,在上面的代码中,
uid
将是null
,即使isAdmin
是true
. 您的确切代码取决于您的使用案例 .WARNING: 这是目前没有记录的行为,所以我会给出我惯常的警告"undocumented features may be changed at any point in the future without notice and even in non-major releases."