firebase swift -- 用户查询

Posted

技术标签:

【中文标题】firebase swift -- 用户查询【英文标题】:firebase swift -- users query 【发布时间】:2016-10-14 02:58:45 【问题描述】:

我正在尝试找到一种方法来查询我的应用程序中的用户。例如,如果我的用户想搜索一个用户以将他添加为朋友。我想我可以将所有用户保存在 Firebase 数据库中,然后在数据库中执行查询,但它看起来非常低效(并且必须有一个更简单的内置方法来做到这一点)。

【问题讨论】:

为什么效率低下?如果您有一个用户列表并且想要执行搜索,则必须由某人进行查询。魔术师不存在:D 你总能猜到,如果你每次都是正确的,那将是 O(1) 我的问题是是否有用户查询,例如在 parse 中您可以创建查询以查找用户(使用 id、用户名或电子邮件)的查询。 Firebase中是否存在这个,还是我需要把所有用户放到实时数据库中,然后在这个数据库中查询。 这是 firebase 中的基本查询。请记住,Firebase 中没有这样的“用户”。如果您想保留用户名、电子邮件等,您可以将它们保留在 /users 节点中,然后在该节点上查询您要查找的特定用户。 Firebase 身份验证中没有内置 API 来查询用户。这就是为什么许多开发人员还将有关其用户的信息存储在他们的 Firebase 数据库中的原因。请参阅***.com/questions/37449635/…、***.com/questions/33737009/… 和 ***.com/questions/14673708/… 【参考方案1】:

“.indexOn”是你的解决方案!

如果您像下面这样构建您的日期,您将能够查询用户!在这里,您可以在 full_name 和 reversed_full_name 上查询用户。您可以提供要查询的任何孩子。例如,您可以在人员下添加电子邮件字段,然后在“.indexOn”中添加“电子邮件”!!!

"people": 
  ".indexOn": ["_search_index/full_name", "_search_index/reversed_full_name"],
  ".read": true,
  "$uid": 
    ".write": "auth.uid === $uid",
    "full_name": 
      ".validate": "newData.isString()"
    ,
    "profile_picture": 
      ".validate": "newData.isString()"
    ,
    "posts": 
      "$postId": 
        ".validate": "newData.val() === true && newData.parent().parent().parent().parent().child('posts').child($postId).exists()"
      
    ,
    "_search_index": 
      "full_name": 
        ".validate": "newData.isString()"
      ,
      "reversed_full_name": 
        ".validate": "newData.isString()"
      
    ,
    "following": 
      "$followedUid": 
        ".validate": "newData.parent().parent().parent().parent().child('followers').child($followedUid).child($uid).val() === true" // Makes sure /followers is in sync
      
    
  

希望这会有所帮助。这是整个安全规则的链接,由 Firebase https://github.com/firebase/friendlypix/blob/master/web/database-rules.json 提供

【讨论】:

以上是关于firebase swift -- 用户查询的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 查询(在 Swift 中)在应用的所有用户中查找特定值

Firebase 查询以在 iOS swift 中通过用户 ID 获取特定用户

Firebase 查询 2 级深度,无需完整参考 swift

Swift 和 Firebase 查询数据库

在 Swift 3 中包含字典的 Firebase 进程子快照

如何使用 swift 有条件地向 Firebase Firestore 中的查询添加另一个过滤器?