我在Android项目中使用Firebase。我有一个ValueEventListener,它继续获取旧值,即使该节点已被其他设备修改。它似乎无视其他设备所做的更新。
这是我的代码:
ValueEventListener listener = destinationDatabaseReference.child(somestring)
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getValue()==null)
{
}
else
{
//here I keep on getting the old value
string value = (long) dataSnapshot.child("someString").getValue();
}
}
答案 0 :(得分:0)
使用如下查询: -
Query query = mDatabase.getReference().child("posts").orderByChild("date").limitToLast(1);
query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if(dataSnapshot!=null){
String notific = String.valueOf(dataSnapshot.getValue());
Log.d("key",dataSnapshot.getKey());
Log.d("title",String.valueOf(dataSnapshot.child("title").getValue()));
Log.d("content",String.valueOf(dataSnapshot.child("content").getValue()));
}
}
答案 1 :(得分:0)
谢谢大家的帮助。我试过你的建议,但它对我不起作用:( 但是,我找到了这个链接,我想分享以防有人需要它。
对于此类问题,您必须使用事务操作。请参阅以下相关有用的链接:
Updating firebase data in several devices by Transaction Operations
答案 2 :(得分:-1)
尝试使用这样的最终引用:
URL url = new URL(yourURL);
final Firebase root = new Firebase(url.toString());
root.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) DataSnapshot dataSnapshot) {
if(dataSnapshot.getValue()==null)
{
}
else
{
//here I keep on getting the old value
string value = (long) dataSnapshot.child("someString").getValue();
}
}