【发布时间】:2022-01-02 14:01:08
【问题描述】:
我有一个 firebase 实时树,它在用户在线时设置了一个特定的节点 New Ride,当用户离线时,节点 New Ride 被删除。这第一次可以正常工作,当用户尝试再次上网时,我无法设置节点。如果不添加,我想检查节点是否已经存在于树中。
这是我目前的代码
DatabaseReference rideRequestRef = FirebaseDatabase(databaseURL: firebaseUrl)
.reference()
.child("Drivers")
.child(currentFirebaseUser.uid)
.child("New Ride");
var ref = FirebaseDatabase(databaseURL: firebaseUrl)
.reference()
.child("Drivers")
.child(currentFirebaseUser.uid);
await ref
//.child(currentFirebaseUser.uid)
.child("New Ride")
.once()
.then((DataSnapshot dataSnapshot) {
if (dataSnapshot == null) {
rideRequestRef.set("searching");
} else {
rideRequestRef.set("searching");
}
});
rideRequestRef.onValue.listen((event) {});
}
【问题讨论】:
-
您使解决方案过于复杂。为什么要删除节点?相反,覆盖它;它会更简单,成本更低。将 new_ride_status 的节点设置为 search 或相反,检查其状态,如果状态发生变化,则使用
set覆盖任何其他详细信息。然后可以将侦听器附加到状态,并且每次删除节点时都不必重新设置。
标签: flutter firebase-realtime-database