如何让子文件夹在firebase中完全写入一次?

时间:2016-06-03 03:24:17

标签: javascript firebase firebase-realtime-database

要将群组创建者与群组成员链接在一起,我希望群组创建者提交一个群组成员可以用来加入群组的连接字符串。

但是,创建连接字符串后,除了创建者之外,我不希望任何人删除或覆盖字符串下的字符串或数据。

在我的javascript中,我可以轻松编写一个检查函数来查看它是否存在:

function tryToAddConnectionString(uid, desiredConnectionString)
{
    firebase.database().ref('/connectionStrings/' + desiredConnectionString).once('value').then(function(snapshot){
         if(snapshot.val()==null)
         {
            //There is no data therefore there is no connection string, so create one.
            firebase.database().ref('connectionStrings/' + desiredConnectionString).set({
              owner: uid });
         }
         else
         {
           //Connection String already exists. Throw "already exists" message
         }
     });
}

但这并不能阻止恶意黑客进入他/她的控制台并输入

firebase.database().ref('connectionStrings/' + desiredConnectionString).set(null);

将删除/接管该组。

我可以设置修复此规则吗?另外,在

'/connectionStrings/'+desiredConnectionString+'members'

我希望人们能够将自己添加为成员。

回顾一下:我正在寻找允许任何人创建连接字符串的规则,但只有创建者才能删除连接字符串或更改所有者子文件夹,但任何人都可以读取/写入成员文件夹。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以使用安全规则轻松完成此操作:

//add a condition to verify that the node doesn't exist or the
//You must add to your node the aid of the creator
".write":"!data.exist() || auth.uid === data.child('creator')"

您可以在此处查看您可以配置的其他内容 Security Rules Firebase