利用Firebase和JavaScript来编写云功能代码;但我想我是否有人能解释使用以下内容在云功能中查找和/或写入的优缺点?!
admin.database().ref()
root.child()
我自己一直在使用admin.database.ref()
,但我需要吗?是否同样使用root.child()
?
答案 0 :(得分:24)
我看到您在Firecast on YouTube的评论中也提到了这个问题。这是个好问题。如果您一直关注Fire Functions示例的Cloud Functions,那么您可能已经看到了admin.database().ref()
。
admin.database().ref()
使用Firebase admin SDK访问数据库中的数据。作为管理员参考,它可以不受限制地访问数据库的任何部分。
在视频root = event.data.ref.root
中,引用发生.onWrite
事件的数据库的根目录。 ref具有与触发事件的用户相同的读写访问权限。与admin.database().ref()
不同,它不授予不受限制的访问权限。因此root.child
访问数据库中的特定路径,只要用户有权访问它。
现在event.data.adminRef.root
是一个数据库引用,可以无限制地访问数据库的任何部分。如果这听起来像admin.database.ref()
,那是因为它们完全相同。就我而言,我选择了event.data.ref.root
来限制一个视频中引入的新主题的数量。如果您更习惯使用管理SDK,那就完全没问了。