【发布时间】:2021-11-17 22:18:54
【问题描述】:
我已经建立了一个有 2 个节点的 Firebase 数据库。一个节点称为“配料”,另一个称为“订单”。我使用 JSON 文件手动设置节点,我刚刚在节点“订单”中手动输入了 1 个条目。可以看到数据库结构的截图:
现在我想在“订单”表中添加更多条目(所以基本上我想再添加一行)。
在我的 Android 应用程序中,我使用以下代码:
// in the class definition of the Fragment
public DatabaseReference firebase_DB;
...
// in the oneCreate Method of the Fragment
firebase_DB = FirebaseDatabase.getInstance().getReference("orders");
...
// when clicking on a button in the Fragment which calls the onClick method
String id = firebase_DB.push().getKey();
DB_Object_Test currentOrder= new DB_Object_Test("testInfo_2", "testName", 2);
firebase_DB.child(id).setValue(currentOrder);
所以基本上代码运行没有错误,firebase_DB.child(id).setValue(currentOrder); 被调用。但是,Firebase 控制台中没有任何变化。我在那里看不到任何新条目。 firebase 数据库已正确连接到应用程序(至少 Android Studio 是这样说的),并且我没有指定任何禁止在数据库上写入内容的规则。相同的数据存储在 SQLite 数据库中没有任何问题。
你们谁能想到这个问题的可能原因?为什么新行没有写入firebase数据库?我会感谢每一条评论。
编辑:这是在片段中单击“订购”按钮后写入 firebase 数据库的调整后代码(通过使用 3 种不同的方法)。
public void onClick(View view) {
if(view.getId() == R.id.ordering_button) {
/* Firebase approach 1
final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("");
DatabaseReference usersRef = ref.child("orders");
Map<String, DB_Object_Test> order = new HashMap<>();
order.put("order_2", new DB_Object_Test("1", "testInfo_2", "testName", "2"));
usersRef.setValue(order);
*/
/*
Firebase approach 3 (by Alex)
*/
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ordersRef = rootRef.child("orders");
Map<String, Object> order = new HashMap<>();
order.put("info", "No additional information");
order.put("name", "Another Test Order");
order.put("table", "15");
Log.e("LogTag", "Before write firebase");
ordersRef.child("order_2").setValue(order).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.e("LogTag", "During on Complete firebase");
if (task.isSuccessful()) {
Log.e("dbTAG", "Data successfully written.");
} else {
Log.e("dbTAG", task.getException().getMessage());
}
}
});
Log.e("LogTag", "Afer write firebase");
/* Firebase approach 2
DatabaseReference firebase_DB = FirebaseDatabase.getInstance().getReference("orders");
String id = firebase_DB.push().getKey();
DB_Object_Test currentOrder= new DB_Object_Test(id, "testInfo_2", "testName", "2");
firebase_DB.child(id).setValue(currentOrder);
//Option 2*
//firebase_DB.setValue(currentOrder);
Log.e("LogTag", "firebase_DB.child(id): " + firebase_DB.child(id));
*/
Navigation.findNavController(getView()).navigate(...);
}
}
【问题讨论】:
-
可能
firebase_DB = FirebaseDatabase.getInstance().getReference().getChild("orders");可以工作
标签: java android firebase firebase-realtime-database google-cloud-platform