gpt4 book ai didi

android - 在检测到仅子节点值发生变化时访问父对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:14 25 4
gpt4 key购买 nike

我有一个 Order 节点和一个 Status 键。我正在寻找 Status 值的变化,如果检测到任何变化,我必须读取Order 节点。

关键是我不想监听 Order 节点的变化。但只是 Order 节点下的 Status。执行此操作的最佳方法是什么?在另一个听众中有一个听众好吗?这是我的代码:

 final Query qRef = FirebaseDatabase.getInstance().getReference().child("orders").orderByChild("customerId").equalTo(FirebaseAuth.getInstance().getCurrentUser().getUid())
.limitToFirst(1);
qRef.keepSynced(true);

final DatabaseReference reference = qRef.getRef().child("status");


reference.addValueEventListener(new ValueEventListener() {

@Override
public void onDataChange(DataSnapshot dataSnapshot) {


DatabaseReference inner = reference.getParent();

inner.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot parent) {
if (parent != null) {
Order newOrder = parent.getValue(Order.class);
if (newOrder != null) {
if (newOrder.getStatus() != null && !newOrder.getStatus().equals("FX_OVER"))
processOrder(newOrder);
}
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}

@Override
public void onCancelled(DatabaseError databaseError) {

}

});

和 JSON:

{   "20161010210955" : {
"createdAt" : {
"date" : 10,
"day" : 1,
"hours" : 21,
"minutes" : 9,
"month" : 9,
"seconds" : 55,
"time" : 1476113995244,
"timezoneOffset" : -330,
"year" : 116
},
"customerId" : "npsd3Ldfsdf1x0hsdfsdf2mj14VUA876f2",
"id" : "20161010210955",
"status" : "FX_FULL"

} }

最佳答案

你为什么不先检查一下状态呢?你一开始就知道身份的值(value)。我认为这个解决方案应该是最佳方式。

reference.addValueEventListener(new ValueEventListener() {

@Override
public void onDataChange(DataSnapshot dataSnapshot) {

if("FX_OVER".equals(dataSnapshot.getValue(String.class)) {

reference.getParent().addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot parent) {
// This is a defensive check. I dont know this is necessary.
// If status exist, parent must be exist.
if (parent.exists()) {
Order newOrder = parent.getValue(Order.class);
if (newOrder != null) {
processOrder(newOrder);
}
}
}

@Override
public void onCancelled(DatabaseError databaseError) {}
});
}
}

@Override
public void onCancelled(DatabaseError databaseError) {}
});

关于android - 在检测到仅子节点值发生变化时访问父对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39963337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com