【问题标题】:How to insert data of two tables in Firebase?如何在 Firebase 中插入两个表的数据?
【发布时间】:2016-12-08 04:18:52
【问题描述】:

我是 Firebase 的新手,我计划从 SQLite 切换到 Firebase。

我在 SQLite 中有 2 个表。

  • 第一个是NAME OF REPOSITORIES。这对所有用户都是通用的,应用程序的所有用户都可以访问。

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

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

【问题讨论】:

标签: android sqlite firebase firebase-realtime-database nosql


【解决方案1】:

要创建两个表,您必须为第二个表创建 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);
    }
}

希望对你有帮助:)

【讨论】:

    【解决方案2】:

    您好,首先您应该尝试了解非规范化数据的基本概念。您可以查看其中一个博客post

    同样,有关详细构造数据的更多信息是here

    您可以再次使用这些链接开始构建数据。您必须具有非规范化的结构才能让开发人员在 Firebase 中获得最佳体验。

    说到这里,两张桌子。

    您需要在 firebase 中创建 2 个节点。第一个是NAME OF REPOSITORIESBOOKMARKS。如果您对这两个表都有任何关系,请使用该关系创建一个新节点,让我们说USERBOOKMARK 并尝试添加对该节点的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多