如何正确嵌套数据并写入Firebase

时间:2016-11-02 10:53:53

标签: android firebase firebase-realtime-database

我有一些允许用户输入数据的Edittext:

AppName
Date
Title
Quantity
User

我启动了一个新的Firebase项目,目前它是一个空白的名单。

我正在设置我的Firebase实例:

private DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReferenceFromUrl("https://myapp.firebase.io");

我希望每次发生新的添加时,我想像这样添加它(AppName是所有条目的共同基础):

AppName
    Date
    Title
    Quantity
    User

    Date
    Title
    Quantity
    User
    ...
    ...

AppName
    Date
    Title
    Quantity
    User

    Date
    Title
    Quantity
    User
    ...
    ...

如何执行以下操作:

  

第一次添加时,AppName将是父节点,和   Firebase应该检查父节点是否存在之后的任何时间   并且相同并将其添加到其中,否则创建新的父节点   并将children节点添加到新的父节点。

我目前的身份验证设置如下:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

我必须更改为true我的应用才能写入Firebase。

我怎么能:

  

不注册用户,只允许应用程序写入   火力。

编辑:

我正在做以下事情:

mDatabase.child("AppName").setValue(etName.getText().toString()); 
mDatabase.child("AppName").child("Date").setValue(etDate.getText().toString()); 
mDatabase.child("AppName").child("Title").setValue(etQuantity.getText().toString());  
mDatabase.child("AppName").child("Quantity").setValue(User.getText().toString());  
mDatabase.child("AppName").child("User").setValue(etUser.getText().toString());

不是添加,而是覆盖之前的条目。我该如何追加。

1 个答案:

答案 0 :(得分:1)

如果我了解您,您需要注册的用户不能在Firebase上编辑您的数据库以及如何知道您是否添加了ID。

首先,正如 Ishan Fernando所说,如果您添加具有相同ID的数据,此数据将被覆盖,并且使用推送方法,Firebase将创建一个unic ID来为您添加数据

阅读本文:https://firebase.google.com/docs/database/android/read-and-write?hl=en

这个要点,感谢用户 realgt ,可以帮助您了解Appname是否存在:https://gist.github.com/anantn/4323949#gistcomment-998628 这将获取您的所有数据,您可以检查是否需要添加它

而且,如果您不想注册用户,但是您需要他们编写数据库,我认为您需要将他们注册为匿名用户: https://firebase.google.com/docs/auth/android/anonymous-auth

Firebase需要注册用户(使用社交网络,匿名发送电子邮件)进行修改,因此尝试使用匿名方法。问题是当用户离开您的应用程序时,该用户将在您的数据库中保持注册状态。所以,我推荐你(请纠正我,如果我错了)在onStop启动时擦除用户并在onReady启动时再次创建它。

我希望它有所帮助。