通过为对象创建单独的实例将数据存储在 Firebase 数据库中

Storing data on a Firebase Database by creating seperate instances for an object

这是我的登录名 Activity。此处提示用户输入他的详细信息,并将数据发送到 firebase 数据库。

    public class LoginActivity extends AppCompatActivity {

    private EditText ET_fname;
    private EditText ET_lname;
    private EditText ET_NIC;
    private EditText ET_email;
    private EditText ET_mobile;
    private Button signup_button;
    private Firebase mRef;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        Firebase.setAndroidContext(this);

        signup_button = (Button) findViewById(R.id.signup_button);
        ET_fname = (EditText) findViewById(R.id.ET_fname);
        ET_lname = (EditText) findViewById(R.id.ET_lname);
        ET_NIC = (EditText) findViewById(R.id.ET_NIC);
        ET_email = (EditText) findViewById(R.id.ET_email);
        ET_mobile = (EditText) findViewById(R.id.ET_mobile);


        //Click Listener for button
        signup_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Creating firebase object
                Firebase ref = new Firebase("https://<database name>.firebaseio.com");

                //Getting values to store
                String firstname = ET_fname.getText().toString().trim();
                String lastname = ET_lname.getText().toString().trim();
                String NIC = ET_NIC.getText().toString().trim();
                String email = ET_email.getText().toString().trim();
                String mobile = ET_mobile.getText().toString().trim();

                //Creating Person object
                User user = new User(firstname, lastname, NIC, email, mobile);

                //Adding values
                user.setFirstname(firstname);
                user.setLastname(lastname);
                user.setNIC(NIC);
                user.setEmail(email);
                user.setMobile(mobile);

                //Storing values to firebase
                //ref.child("User").setValue(user);
                ref.child("Users").child("User").setValue(user);
            }
        });private EditText ET_fname;
    private EditText ET_lname;
    private EditText ET_NIC;
    private EditText ET_email;
    private EditText ET_mobile;
    private Button signup_button;
    private Firebase mRef;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        Firebase.setAndroidContext(this);

        signup_button = (Button) findViewById(R.id.signup_button);
        ET_fname = (EditText) findViewById(R.id.ET_fname);
        ET_lname = (EditText) findViewById(R.id.ET_lname);
        ET_NIC = (EditText) findViewById(R.id.ET_NIC);
        ET_email = (EditText) findViewById(R.id.ET_email);
        ET_mobile = (EditText) findViewById(R.id.ET_mobile);


        //Click Listener for button
        signup_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //Creating firebase object
                Firebase ref = new Firebase("https://<database name>.firebaseio.com");

                //Getting values to store
                String firstname = ET_fname.getText().toString().trim();
                String lastname = ET_lname.getText().toString().trim();
                String NIC = ET_NIC.getText().toString().trim();
                String email = ET_email.getText().toString().trim();
                String mobile = ET_mobile.getText().toString().trim();

                //Creating Person object
                User user = new User(firstname, lastname, NIC, email, mobile);

                //Adding values
                user.setFirstname(firstname);
                user.setLastname(lastname);
                user.setNIC(NIC);
                user.setEmail(email);
                user.setMobile(mobile);

                //Storing values to firebase
                //ref.child("User").setValue(user);
                ref.child("Users").child("User").setValue(user);
            }
        });

这是我的用户Class

public class User {
    private String firstname;
    private String lastname;
    private String NIC;
    private String email;
    private String mobile;



        public User(String firstname, String lastname, String NIC, String email, String mobile) {
        this.firstname = firstname;
        this.lastname = lastname;
        this.NIC = NIC;
        this.email = email;
        this.mobile = mobile;

    }public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public String getNIC() {
        return NIC;
    }

    public void setNIC(String nic) {
        this.NIC = nic;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
}

登录 Activity 用于将文本字段中的数据发送到 Firebase 数据库。每次我 运行 该应用程序时,它都会替换创建的用户实例。

我希望能够通过自动生成数字或其他方式为每个用户创建单独的实例。知道如何做到这一点吗?

您可以通过两种方式解决此问题:

1. Firebase 身份验证 - 我的推荐

Firebase 提供了一个 authentication service,它为每个创建的用户生成一个 uid

您可以使用此 uid 作为密钥来存储您的用户数据,甚至可以将用户身份验证添加到您的应用中。

2。 Java的UUID方法

如果您想在应用程序中创建自己的 ID,可以使用 java.util.UUID.randomUUID() 方法。

示例来自 TutorialsPoint

import java.util.*;

public class UUIDDemo {
   public static void main(String[] args) {
   // creating UUID      
   UUID uid = UUID.fromString("38400000-8cf0-11bd-b23e-10b96e4ef00d");     

   // checking the value of random UUID
   System.out.println("Random UUID value: "+uid.randomUUID());    
   }    
}

打印出:

Random UUID value: 046b6c7f-0b8a-43b9-b35d-6489e6daee91

网上的共识似乎是这种方法的冲突非常低,但是,仍有机会,所以我建议使用 Firebase 的 uid,因为它们保证它是唯一的。

您正在使用此代码段添加用户:

//Creating Person object
User user = new User(firstname, lastname, NIC, email, mobile);

//Storing values to firebase
ref.child("Users").child("User").setValue(user);

有了这个,你就可以在这个位置设置数据 /Users/User。如果要将数据添加到该位置下的新的唯一子项,请使用 Firebase push() 方法:

//Storing values to firebase
ref.child("Users").child("User").push().setValue(user);

这将创建一个看起来很复杂的密钥,称为推送 ID。它与@NishantRoy 在他的回答中使用的 UUID 具有相似的特征,但具有按时间顺序排列的额外好处。

请注意,Saving Lists Of Data section of the Firebase documentation 中对此进行了介绍。我强烈建议您在继续之前花一些时间阅读该文档,因为它提供了您可能遇到的许多常见问题的答案。