我具有以下Firebase数据库结构(请参见图片),该结构是在用户将compliment
发送给另一个用户时创建的。
compliments
下compliment.key
也保存在users-compliments
下的senderID / receiverID /下,然后保存“ complimentID”:“ boolean”对,以指示其是否“活动” 我希望在允许将另一个发送给同一用户之前检查是否存在“主动”称赞。
但是,即使存在一个值为null
的子节点,以下查询也会产生1
输出。
我在这里做什么错了?
查询:
REF_USERS_COMPLIMENTS.child(currentUid).child(forId).queryEqual(toValue: "1").observeSingleEvent(of: .value) { (snapshot) in
print("snap: \(snapshot.value)")
}
控制台输出:
snap: Optional(<null>)
答案 0 :(得分:1)
使用queryEqual()
时,必须将其与queryOrderedBy
结合使用。在您的情况下,它将是queryOrderedByValue()
,因为您要比较值:
REF_USERS_COMPLIMENTS.child(currentUid).child(forId).queryOrderedByValue().queryEqual(toValue: "1").observeSingleEvent(of: .value) { (snapshot) in
print("snap: \(snapshot.value)")
}
有关更多信息,请参见the docs。
答案 1 :(得分:0)
尝试一下:
REF_USERS_COMPLIMENTS.child(currentUid).child(forId).observeSingleEvent(of: .value) { (snapshot) in
print("snap: \(snapshot.value)")
if let _ = snapshot.value as? NSNull {
// do your thing
}
}