我是 Firebase 的新手,我从 Firebase 的文档中学到的是,如果您想要在使用后立即检索数据{ {1}}。
我的问题是将其集成到我的代码中。 我有这样的数据结构:
现在我想在 16032017 下添加一个新对象。为此,我必须执行以下步骤:
获得儿童金额后,我将使用键3创建一个新的子节点并插入我的数据值对,这是一个像这样的对象:
addListenerForSingleValueEvent
使用其他数据库,这将非常简单。我会按照我描述的顺序完全实现它。首先读取数据并返回值,然后使用该值插入新数据。但我无法通过 Firebase 找到解决方法。因为在 Firebase 中,首先我必须使用public class StimmungAbfrage {
public Integer Angespannt ;
public Integer Motiviert;
}
来读取子节点的数量。我写了这样的代码:
addListenerForSingleValueEvent
但问题是我无法获得URL url = new URL(DAL_Utilities.DatabaseURL + "players/" + user.getName() + "/Stimmungsabfrage/" + stimmungAbfrage.Date + "/");
Firebase root = new Firebase(url.toString());
root.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long counter = 1;
counter = dataSnapshot.getChildrenCount();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
Log.d("DAL_User.GetLTSabfrage",firebaseError.getMessage());
}
});
的值,因为它是counter
。因此,无法返回数据以在插入过程的另一个函数中使用它。
然后我尝试在void
中进行阅读和插入事务。但这也是不可能的,因为我无法找到将数据传递给此函数的方法,我想在数据库中插入。此函数也无法访问实现onDataChange
的主类的数据,除非我将所有变量设为全局,这不是正确的方法。
那么如何使用 Firebase ?
答案 0 :(得分:0)
ref.child("16032017").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
StimmungAbfrage stim = postSnapshot.getValue(StimmungAbfrage.class);
String string = " Angespannt: "+stim.get Angespannt()+"\nMotiviert: "+stim.getMotiviert();
textView.setText(string);
}
}});