我正在使用谷歌Firebase的实时数据库,我正在尝试检查孩子是否存在。
我的数据库结构如下
- / (root)
- /users/
–- /james/
-- /jake/
- /rooms/
-- /room1/
--- (room 1 properties)
-- /room2/
--- (room 2 properties)
我想检查room1是否存在。 我尝试过以下方法:
let roomName:String = "room1"
roomsDB.child(roomName).observeSingleEventOfType(.Value) {
(snap:FIRDataSnapshot) in
let roomExists:Bool = snap.value != nil ? "TAKEN" : "NOT TAKEN"
}
在访问snap.value
时,它会返回该房间属性的JSON,但我如何检查房间(/rooms/room1/
)是否在那里开始?
评论是否需要澄清
答案 0 :(得分:64)
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")
}
})
答案 1 :(得分:14)
当answer of @ismael33有效时,它会下载所有<html>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js">
var limit = 3;
$('input.ko_chk').on('change', function(evt) {
if($(this).siblings(':checked').length >= limit) {
this.checked = false;
}
});
</script>
<body>
<input type="checkbox" class="ko_chk" name="first" value="1"><br>
<input type="checkbox" class="ko_chk" name="second" value="2"><br>
<input type="checkbox" class="ko_chk" name="third" value="3"><br>
<input type="checkbox" class="ko_chk" name="fourth" value="4">
</body>
</html>
以检查rooms
是否存在。
以下代码完成相同的操作,但只下载room1
来执行此操作:
rooms/room1
答案 2 :(得分:7)
我有一些使用firebase的建议。你可以从firebase查看。
我们可以使用DataSnapshot
方法测试exists()
中某些键的存在:
DataSnapshot 包含Firebase数据库位置的数据。任何 当您从Firebase数据库中读取数据时,您将收到数据 DataSnapshot。
将DataSnapshot传递给您使用
on()
附加的事件回调 或once()
。您可以将快照的内容提取为 JavaScript对象通过调用其val()
方法。或者,你可以 通过调用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)
});
另请参阅此page(已在评论中提及)
这里有一个使用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) {
}
});
我希望你现在有了一个主意。
答案 3 :(得分:1)
您可以查看snapshot.exists值。
NSString *roomId = @"room1";
FIRDatabaseReference *refUniqRoom = [[[[FIRDatabase database] reference]
child:@"rooms"]
child:roomId];
[refUniqRoom observeSingleEventOfType:FIRDataEventTypeValue
withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
bool isExists = snapshot.exists;
NSLog(@"%d", isExists);
}];
答案 4 :(得分:0)
使用其中任何一个如此简单易行...... 你喜欢哪种方式
ValueEventListener responseListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
// Do stuff
} else {
// Do stuff
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
FirebaseUtil.getResponsesRef().child(postKey).addValueEventListener(responseListener);
function go() {
var userId = prompt('Username?', 'Guest');
checkIfUserExists(userId);
}
var USERS_LOCATION = 'https://SampleChat.firebaseIO-demo.com/users';
function userExistsCallback(userId, exists) {
if (exists) {
alert('user ' + userId + ' exists!');
} else {
alert('user ' + userId + ' does not exist!');
}
}
// Tests to see if /users/<userId> has any data.
function checkIfUserExists(userId) {
var usersRef = new Firebase(USERS_LOCATION);
usersRef.child(userId).once('value', function(snapshot) {
var exists = (snapshot.val() !== null);
userExistsCallback(userId, exists);
});
}
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) {
}
});
答案 5 :(得分:0)
users = new HashMap<>();
users.put("UserID", milisec);
users.put("UserName", username);
users.put("UserEmailID", email);
users.put("UserPhoneNumber", phoneno);
users.put("UserPassword", hiddenEditPassword);
users.put("UserDateTime", new Timestamp(new Date()));
users.put("UserProfileImage", " ");
FirebaseFirestore.getInstance().collection("Users").document(phoneno).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.getResult().exists()) {
Toast.makeText(SignupActivity.this, "Already User", Toast.LENGTH_SHORT).show();
} else {
FirebaseFirestore.getInstance().collection("Users")
.document(phoneno).set(users).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Toast.makeText(SignupActivity.this, "Registers", Toast.LENGTH_SHORT).show();
}
});
}
hideProgressDialog();
}
});`
enter code here