android - 如何在 Firebase 中插入两个表的数据?

标签 android sqlite firebase firebase-realtime-database nosql

我是 Firebase 的新手,我打算从 SQLite 切换到 Firebase。

我在 SQLite 中有 2 个表。

  • 第一个是存储库名称。这将对所有用户通用,应用程序的所有用户都可以访问。

  • 第二个是BOOKMARKS。这将特定于特定用户。我知道 Firebase 中没有表结构。

问题是,我如何在 Firebase 中构建此类数据?我曾尝试了解 Firebase 的树结构,但没有获得此类场景的帮助。

最佳答案

要创建两个表,您必须为第二个表创建 DatabaseReference 对象。您还必须创建第二个节点。

public class MainActivity extends AppCompatActivity {

    private DatabaseReference mFirebaseDatabase;
    private FirebaseDatabase mFirebaseInstance;

    //Create an object of DatabaseReference to create second table
    private DatabaseReference mFirebaseDatabase1;

    private String userId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mFirebaseInstance = FirebaseDatabase.getInstance();

        // get reference to 'RepositoryName' node
        mFirebaseDatabase = mFirebaseInstance.getReference("RepositoryName");

        // get reference to 'Bookmarks' node
        mFirebaseDatabase1 = mFirebaseInstance.getReference("Bookmarks");

        // Save / update the user
        btnSave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String name = inputName.getText().toString();
                String email = inputEmail.getText().toString();
                String password = inputPassword.getText().toString();
                String confirmPassword = inputConfirmPassword.getText().toString();

                // Check for already existed userId
                if (TextUtils.isEmpty(userId)) {
                    createUser(name, email, password, confirmPassword);
                }
            }
        });
    }

    /**
     * Creating new user node under 'users'
     */
    private void createUser(String name, String email, String password, String confirmPassword) {
        // TODO
        // In real apps this userId should be fetched
        // by implementing firebase auth
        if (TextUtils.isEmpty(userId)) {
                /*userId store the unique key like KYNGnlMMIf3w11VukqD
                in this key store usename and email as JSON format in firebase cloud database*/

            // "mFirebaseDatabase" is for table1(i.e RepositoryName)
            //userId = mFirebaseDatabase.push().getKey();

            // "mFirebaseDatabase1" is for table2(i.e Bookmarks)
            userId = mFirebaseDatabase1.push().getKey();
        }

        User user = new User(name, email, password, confirmPassword);

        //insert data in firebase database RepositoryName
        mFirebaseDatabase.child(userId).setValue(user);

        //insert data in firebase database Bookmarks
        mFirebaseDatabase1.child(userId).setValue(user);
    }
}

希望这对你有帮助:)

关于android - 如何在 Firebase 中插入两个表的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41031700/

相关文章:

android - 在android中使用加速度计计算步数

java - 依赖项未复制到 jar 中(在 Gradle 中)

javascript - 如何使用 Javascript 在 Firebase 中仅显示对应于今天日期的特定 child ?

firebase - 删除 LiveData 返回函数内的 Firestore 快照监听器

android - Android Lollipop 设备 [Nexus 9 和 nexus 5] 上未显示菜单软键

Android ViewPager : Update off-screen but cached fragments in ViewPager

c - Sqlite3.c 中的 For 循环语法错误

sql - 将单行扩展到多行

android - Android从数据库获取数据

firebase - 是否可以通过 API 创建新的 Firebase 项目?