我有一个具有以下结构的firebase数据库
group by
我正在尝试删除节点 ref
|
|-- rooms
| |
| .-- LUUZxjzhMQ9xf7d2-lU
| |
| seats
| |
| |-- east: 'frank'
| |-- north: 'mike'
| |-- south: 'john'
| |-- west: 'sam'
。
我知道我可以使用
north:'mike'
但是问题是var db = firebase.database().ref('rooms/LUUZxjzhMQ9xf7d2-lU/seats/north');
db.remove();
不一定与mike
结合使用。他可能位于north
,east
或west
。因此,我必须搜索包含south
作为值的节点,然后将其删除。
我无法提出搜索firebase数据库以执行mike
函数的正确方法。
PS:我已经在代码中引用了对象ID .remove()
。因此,我只需要搜索LUUZxjzhMQ9xf7d2-lU
级别。
这是我尝试过的:
seats
那没有用。所以我尝试了:
var db = firebase.database().ref();
var path = 'rooms/LUUZxjzhMQ9xf7d2-lU/seats';
db.child(path).orderByChild('seats').equalTo('mike').remove();
那也不起作用。
我在做什么错了?
答案 0 :(得分:1)
您需要使用orderByValue
并使用DataSanpshot
删除一个或多个子代:
var db = firebase.database().ref();
var path = 'rooms/LUUZxjzhMQ9xf7d2-lU/seats';
db.child(path).orderByValue().equalTo('mike').once('value')
.then(snapshot => {
snapshot.forEach(childSnapshot => {
db.child(path + '/' + childSnapshot.ref.key).remove();
});
});
这将删除所有以mike
作为值的子级。