我正在尝试检索一些值而不是其他值。事实上,我想通过用户的名字来搜索他们。
我尝试使用querystarting(atvalue:input)
和queryending(atvalue:“u{f8ff}”)
,但找不到正确的解决方案。
let input = searchInput.text?.lowercased()
print("Search for \(input!)")
let ref = Database.database().reference().child("Usernames").queryStarting(atValue: input).queryEnding(atValue: "u{f8ff}").queryOrderedByKey()
ref.observeSingleEvent(of: .value) { (snapshot) in
if snapshot.exists() {
for users in snapshot.children.allObjects as! [DataSnapshot] {
let user = users.value as? [String:AnyObject]
let id = user?["id"] as! String
Users.init(userId: (id))
print(users.key)
}
}
}
如您所见,我还添加了querYorderedByKey()
。如果我不添加那个部分,它就不会检索任何东西。我想要的只是从我在TextField中所写的内容开始检索值。
Usernames
----- charles
----------id: charles's uid
----- pierre
----------id: pierre's uid
----- bob
----------id: bob's uid
----- lu
----------id: lu's uid
当前查询从正确的输入开始,但以U{f8ff}
结束-这意味着如果开始BO
,还会得到以C
、D
等开头的单词。
您需要做的是以字符串开头的最高值结束,例如,对于bo
的输入,您希望以bo\u{f8ff}
结束。您可以通过将输入与unicode值连接起来来实现这一点,即:
...queryEnding(atValue: input + "\u{f8ff}")... // <-- Also note that the unicode character is escaped here
我有一个firebase数据库,员工数据的结构如下。我还有一个用户表,它具有'Company ID'属性。每次用户登录时,我都希望获取与用户“公司ID”匹配的所有员工。是否有可能实现这使用firebase数据库规则或我必须写一些查询。
3.移除值事件侦听器和脱机的区别。
该库只支持Double、Boolean和String。我现在真困惑。怎么可能?
但结果是一样的。 这是我的.hbm.xml文件中的内容: 对于用户: 我做错了什么?如果查询参数不是“简单”类型,我需要做一些特殊的事情吗?
我在一个Android应用程序中使用Firebase数据库,每次用户启动时,我都会在数据库中存储一些值,为此我会执行以下操作: 正如您在子方法中看到的,如果称为“usrId”,它将创建usrId目录,并在其中添加所有neccesary信息。但是我想为每个用户创建目录,所以我尝试传递usrId变量作为参数。但它不起作用。当我调试代码时,调试器说本地var usrId无法识别,我的问题是如何在Fire
当我试图删除或编辑实时数据库中的节点时,我总是得到这样的信息:我必须选择一个元素较少的键来更改某些内容,否则它是只读的。 但是当我单击低级节点时,没有任何反应。因此,我实际上可以从控制台:( 一周前,我没有看到这个警告,一切都很好!知道如何回到工作版本吗? 我也觉得德语翻译的不太好,因为它告诉我应该激活另一种模式。用英语说,模式被激活。