【问题标题】:How to insert data of two tables in Firebase?如何在 Firebase 中插入两个表的数据?
【发布时间】:2016-12-08 04:18:52
【问题描述】:
我是 Firebase 的新手,我计划从 SQLite 切换到 Firebase。
我在 SQLite 中有 2 个表。
问题是,如何在 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 REPOSITORIES 和BOOKMARKS。如果您对这两个表都有任何关系,请使用该关系创建一个新节点,让我们说USERBOOKMARK 并尝试添加对该节点的引用。