每次用户按下Firebase(Android)中的按钮时如何存储数据

时间:2017-03-03 19:02:50

标签: android firebase firebase-realtime-database

我是一位经验丰富的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

1 个答案:

答案 0 :(得分:0)

正如安德鲁评论的那样,使用push将项目添加到(半时间顺序)列表中确实很正常。

它们在逻辑上类似于MySQL中的自动增量字段,但具有(非常)不同的格式。请参阅this post about why Firebase doesn't use the +1 style incrementsthis post on the push IDs

如果您的问题已经具有唯一标识它们的属性,那么您应该将其用作关键字。因此,假设您要存储Firebase身份验证用户列表,请将每个用户存储在uid下。或者,如果问题文本必须是唯一的,您应该将每个问题存储在其文本的(散列衍生物)下。