所以这是我的JSON树的图像: my JSON TREE
问题:
我想知道如何检查usernames
中是否存在用户名,例如 sean 。我目前不知道如何实现这一点。
我尝试过的:
usernames
孩子的关键是“theUsernameOf - userUID
”,这会导致问题userUID
是动态的,并且与每个用户(来自firebase auth)不同,因此我无法使用:
.queryOrderedByChild("theUsernameOf-userUID").queryEqual(toValue: self.usernameTextBox.text!)
usernames
子项的键不能像theUsername
那样是静态的,因为它只能有1个值/无法生成更多节点。
非常感谢,如果我没有足够清楚解释,请对不起。
答案 0 :(得分:2)
我想修改您的数据库结构,因为当前执行此查询不正确。
应该如下所示:
始终使用自动递增的键进行查询。这里usernames -> autoGeneratedKey -> yourData (Dictionary - Key-Value pair)
现在您可以轻松检查是否存在任何密钥。
let ref = defaultDB.reference.child("usernames")
ref.queryOrdered(byChild: "username").queryEqual(toValue: "sean").observeSingleEvent(of: DataEventType.value) { (snapshot) in
if snapshot.exists() {
print("exists")
}
else {
print("doesn't exist")
}
}
输出存在
这是正确的方法。只需检查snapshot.exists()
即可为您完成工作。
答案 1 :(得分:0)
以下是如何做到这一点
将数据库引用设置为用户名节点。例如class alexicon(object):
def __init__(self):
self.directions = ['north', 'south', 'west', 'east', 'up', 'down']
self.items = []
def scan(self, words):
self.word = words.split()
# direction
self.direction_word = [i for i in self.word if i in self.directions]
self.direction_list = []
for x in self.direction_word:
self.direction_list.append(('direction', '%s' %(x)) )
if self.direction_list != []:
self.items.extend(self.direction_list)
else:
pass
return self.items
lexicon = alexicon()
result = lexicon.scan('north')
print result
现在使用for循环解析快照 让usernames = snapshot.value为!的NSDictionary
现在是for循环
db.ref.child("usernames")
答案 2 :(得分:0)
你也可以:
对usernames
进行firebase调用并进行以下操作:
let usernames = snapshot.value as? [String: AnyObject]
,
那么你所要做的就是
if let keyExists = usernames[YOURUSERNAMECHECKSTRING] {
//It's true
}
另一种看待它的方式。
答案 3 :(得分:0)
尝试此代码将帮助您不需要更改您的firebase结构
在Swift中
function addToCart() { // onclick Event to add and show the price
arr.push(Number(productPrice.innerHTML));
function getSum(total, num) {
return total + num;
}
var tempTotal = arr.reduce(getSum);
totalPrice.innerHTML = tempTotal;
}
目标c
Database.database().reference(withPath: "users").queryOrdered(byChild: "usernames").queryEqual(toValue: "yourUserName").observe(.value)
{ (snapshot:DataSnapshot) in
if snapshot.valueInExportFormat() is NSDictionary
{
// User is exits
}
else
{
}
}