Hid*_*n14 35 firebase swift firebase-realtime-database
我正在使用谷歌Firebase的实时数据库,我正在尝试检查一个孩子是否存在.
我的数据库结构如下
- / (root)
- /users/
–- /james/
-- /jake/
- /rooms/
-- /room1/
--- (room 1 properties)
-- /room2/
--- (room 2 properties)
Run Code Online (Sandbox Code Playgroud)
我想检查room1是否存在.我尝试过以下方法:
let roomName:String = "room1"
roomsDB.child(roomName).observeSingleEventOfType(.Value) {
(snap:FIRDataSnapshot) in
let roomExists:Bool = snap.value != nil ? "TAKEN" : "NOT TAKEN"
}
Run Code Online (Sandbox Code Playgroud)
在访问snap.value它时返回该房间属性的JSON,但我如何检查room(/rooms/room1/)是否在那里开始?
评论是否需要澄清
小智 69
self.ref = FIRDatabase.database().reference()
ref.child("rooms").observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.hasChild("room1"){
print("true rooms exist")
}else{
print("false room doesn't exist")
}
})
Run Code Online (Sandbox Code Playgroud)
Fra*_*len 20
虽然@ ismael33的答案有效,但它会下载所有内容rooms以检查是否room1存在.
以下代码完成相同的操作,但只有下载rooms/room1才能执行此操作:
ref = FIRDatabase.database().reference()
ref.child("rooms/room1").observeSingleEvent(of: .value, with: { (snapshot) in
if snapshot.exists(){
print("true rooms exist")
}else{
print("false room doesn't exist")
}
})
Run Code Online (Sandbox Code Playgroud)
我有一些建议使用firebase.你从firebase检查它.
我们可以DataSnapshot使用其exists()方法测试某些键中是否存在某些键:
一个DataSnapshot包含从数据库火力地堡的位置数据.每次从Firebase数据库读取数据时,都会将数据作为DataSnapshot接收.
DataSnapshot将传递给您附加的事件回调
on()或once().您可以通过调用其val()方法将快照的内容提取为JavaScript对象.或者,您可以通过调用child()返回子快照(然后可以调用val()它)来遍历快照.DataSnapshot是数据库位置的高效生成的,不可变的数据副本.它们无法修改,永远不会改变.要修改数据,请始终直接使用Firebase参考.
exists() - 如果此DataSnapshot包含任何数据,则返回true.它比使用快照略高效.val() !== null.
firebase文档中的示例(javascript示例)
var ref = new Firebase("https://docs-examples.firebaseio.com/samplechat/users/fred");
ref.once("value", function(snapshot) {
var a = snapshot.exists();
// a === true
var b = snapshot.child("rooms").exists();
// b === true
var c = snapshot.child("rooms/room1").exists();
// c === true
var d = snapshot.child("rooms/room0").exists();
// d === false (because there is no "rooms/room0" child in the data snapshot)
});
Run Code Online (Sandbox Code Playgroud)
另请参阅此页面(已在我的评论中提及)
这里有一个使用java的例子.
Firebase userRef= new Firebase(USERS_LOCATION);
userRef.child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
if (snapshot.getValue() !== null) {
//user exists, do something
} else {
//user does not exist, do something else
}
}
@Override
public void onCancelled(FirebaseError arg0) {
}
});
Run Code Online (Sandbox Code Playgroud)
我希望你现在有了一个主意.
| 归档时间: |
|
| 查看次数: |
45646 次 |
| 最近记录: |