Firebase数据库规则阻止任何写入,但仅允许删除?

时间:2020-02-18 18:21:33

标签: firebase firebase-realtime-database firebase-security

是否可以选择创建规则以阻止任何写或更新,但仅允许删除节点?

我的示例是我想为游戏创建Cupon代码,因此,如果我在数据库中创建Cupon代码,则每个人都可以读取并访问它,但是当第一人称在游戏中使用它时,他也会删除此代码数据库中的cupon。我可以创建它,但是在这种情况下,每个人都可以在数据库中创建新节点,我不希望那样,因为每个人都可以完全对我的基础进行垃圾邮件处理。

希望任何人都会明白我的意思。

编辑:我正在实时数据库中

致谢

2 个答案:

答案 0 :(得分:0)

要允许写入初始数据,并删除数据,但不能更新数据:

"(!data.exists() &&  newData.exists()) ||
 ( data.exists() && !newData.exists())"

答案 1 :(得分:0)

相同的结果,无法删除,我尝试了很多组合,但都无济于事,因此,我只是在这里问是否还有其他选择。如果启用了写入功能,则在获取节点后删除节点:

private void PromoCodeDB()
{
    RestClient.Get<PromoCodeData>(codesDbURL + codeTextNum.text + ".json").Then(response =>
    {
        promoCodes = response;
        UpdateGold();
        Debug.Log("Code accepted");

        DeletePromoCodeDB();

    }).Catch(error =>
    {
        Debug.Log("Code does not exist.");
    });
}

private void DeletePromoCodeDB()
{
    RestClient.Delete(codesDbURL + codeTextNum.text + ".json").Then(response => {
        Debug.Log("Promo code deleted");
    }).Catch(error =>
    {
        Debug.Log("Cannot be deleted");
    });
}
相关问题