如何同时更新不同的节点子节点firebase android
Posted
技术标签:
【中文标题】如何同时更新不同的节点子节点firebase android【英文标题】:How to update different node child at same time firebase android 【发布时间】:2020-01-07 16:54:09 【问题描述】:我想根据条件更新时间段,例如当用户预订自行车开始时间上午 9:00 和结束时间下午 12:00 时,我想更新时间段从上午 9:00 到上午 12:00 可用性 false。 那么是否可以同时更新不同的孩子。或者请给我一条路径,我该怎么做。
DatabaseReference ref= FirebaseDatabase.getInstance().getReference().child("TimeSlot").child(Common.BikeId);
ref.orderByChild("TimeSlot").equalTo("10:00AM").addListenerForSingleValueEvent(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
//update children
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
);
在上面的代码中,我一次只能更新一个孩子 如何解决这种解决方案。
【问题讨论】:
你有多少个账号***.com/q/59611877/7015400 这里有账号有问题吗? 我们可以使用for循环来更新不同孩子的数量 【参考方案1】:首先,您无法将String
与startAt
和endAt
时间进行比较。而是使用像 [0 - 24] 这样的 long
值来保持 24 小时格式的时间。
然后,执行下面的操作将子isAvailable
更新为false
DatabaseReference ref = FirebaseDatabase.getInstance().getReference()
.child("TimeSlot")
.child(Common.BikeId);
ref.orderByChild("time_slot")
.startAt(9.0)
.endAt(12.0)
.addListenerForSingleValueEvent(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
for(DataSnapshot childSnapshot: dataSnapshot.getChildren())
//Check whether child with key 'isAvailable' exist or not
if(childSnapshot.hasChild("isAvailable"))
//Now update the status with false
ref.child(childSnapshot.getKey())
.child("isAvailable")
.setValue(false);
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
);
【讨论】:
非常感谢。你的解决方案就像一个魅力。在这个问题上花了很多时间。你的解决方案真的很完美......再次感谢@Md Asaduzzaman以上是关于如何同时更新不同的节点子节点firebase android的主要内容,如果未能解决你的问题,请参考以下文章
BZOJ.1023.[SHOI2008]cactus仙人掌图(DP)
具有实时数据库触发器的 Firebase 云功能:如何更新源节点?