我是一位经验丰富的MySQL用户,但我是json和firebase的新手。我正在尝试创建一个用户能够输入数据的活动,并将其保存到firebase中的数据库中。我实现了我的目标,但这是问题所在。当我保存它时(我认为)我需要使用字符串指定子元素。由于此子元素是静态的,因此每次用户输入问题时,它都会覆盖数据库中的现有元素。我该如何解决这个问题?如何获取数据?这是我的代码的一部分。
private FirebaseAuth firebaseAuth;
private DatabaseReference databaseReference;
firebaseAuth=FirebaseAuth.getInstance();
if(firebaseAuth.getCurrentUser()==null){
finish();
startActivity(new Intent(this,LoginActivity.class));
}
FirebaseUser user=firebaseAuth.getCurrentUser();
databaseReference= FirebaseDatabase.getInstance().getReference();
Info info=new Info(question,answer,a,b,c,d);
databaseReference.child("secondQuestion").setValue(info);
//info is a new object which takes 6 string as an input.
// As you can see, I declare a string inside .child and it overwrites the data stored in it
答案 0 :(得分:0)
正如安德鲁评论的那样,使用push
将项目添加到(半时间顺序)列表中确实很正常。
它们在逻辑上类似于MySQL中的自动增量字段,但具有(非常)不同的格式。请参阅this post about why Firebase doesn't use the +1 style increments和this post on the push IDs。
如果您的问题已经具有唯一标识它们的属性,那么您应该将其用作关键字。因此,假设您要存储Firebase身份验证用户列表,请将每个用户存储在uid
下。或者,如果问题文本必须是唯一的,您应该将每个问题存储在其文本的(散列衍生物)下。