我有一些允许用户输入数据的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());
不是添加,而是覆盖之前的条目。我该如何追加。
答案 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启动时再次创建它。
我希望它有所帮助。