我正在尝试从firebase读取childByAutoId()保存的数据。我可以成功读取上半部分,但读取的是childByAutoId()。例如。
在我的firebase函数中是
记录器-uid是BoSwank ...是正确的,但是在下面的行中
logger-workerId为-MBauxL ....不正确。那是childByAutoID()的值,应该是hkKplzF ...
下面是我如何读取此数据的方法。
exports.observeNotifications = functions.database.ref('/notifications/{cardUID}/{workerId}').onCreate((snapshot, context) => {
var uid = context.params.cardUID;
var workerId = context.params.workerId;
console.log('LOGGER --- uid is ' + uid);
console.log('LOGGER --- workerId is ' + workerId)
})
我以为将/ notifications / {cardUID} / {workerId}更改为/ notifications / {cardUID} / {cardUID / workerId}
然后改变
var workerId = context.params.workerId;
至
var workerId = context.params.cardUID.workerId;
会成功的,但事实并非如此。
使用Cloud Functions数据库触发器时,路径中的通配符仅与节点名称匹配。他们从来没有匹配任何孩子的价值观。您现在看到的是预期的行为,无法更改它。
如果要在路径中匹配的位置下找到子代的值,则必须使用snapshot
传递给函数的参数来达到子代的值。它是一个DataSnapshot对象,包含路径中匹配位置下所有子项的所有值。
在您的情况下,workerId
将发现这样的值:
const workerId = snapshot.val().workerId
我建议阅读文档以获取有关数据库触发器如何工作的更完整信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句