加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何使用Firebase查询等于(值,键)?

发布时间:2020-12-14 17:45:01 所属栏目:Java 来源:网络整理
导读:作为firebase中的新手,我试图在这个简单的用例中模仿一种“where子句”请求来检索用户的钱包: User 48bde8f8-3b66-40bc-b988-566ccc77335c email: "toto@acme.com" username: "userTest1"UserWallet F4PvtvNT2Z coins: 26 someList elemet1 elemet2 user: "
作为firebase中的新手,我试图在这个简单的用例中模仿一种“where子句”请求来检索用户的钱包:
User
   48bde8f8-3b66-40bc-b988-566ccc77335c
      email: "toto@acme.com"
      username: "userTest1"

UserWallet
   F4PvtvNT2Z
      coins: 26
      someList
         elemet1
         elemet2 
      user: "48bde8f8-3b66-40bc-b988-566ccc77335c"

首先我试图用我的请求来编写我的请求:

Firebase root = new Firebase("https://myApp.firebaseio.com/");
Firebase ref = root.child("UserWallet");
Query query = ref.equalTo("48bde8f8-3b66-40bc-b988-566ccc77335c","user");

结果是null,所以我写了这个查询:

Query query = ref.orderByChild("user").equalTo("48bde8f8-3b66-40bc-b988-566ccc77335c","user");

结果再次为null.检索钱包的唯一方法是使用以下查询:

Query query = ref.orderByChild("user").equalTo("48bde8f8-3b66-40bc-b988-566ccc77335c");

所以我应该总是使用en“orderByChild()”查询之前使用“equalTo()”?
那么查询“equalTo(String value,String key)”与“equalsTo(String value)”的目的是什么,因为只有第二个正确运行?

解决方法

有一些边缘情况不需要orderBy …(),但是一般来说,在过滤操作(equalsTo(),startAt(),endAt())之前需要一个orderBy …().

我强烈建议您先阅读Firebase programming guide for Android(其中95%适用于常规Java).在这个指南中花了几个小时,这里可以节省数十个问题.例如:这是section on queries.

阅读后,您可能还想在NoSQL Data Modeling阅读本指南.它涵盖了NoSQL数据建模中的许多常见模式,并将帮助您早日实现将SQL查询映射到NoSQL数据库是一个逻辑思想,但很少是一个好的一.

我的初始(没有任何想法你的用例,除了“我需要能够找到一个用户的钱包”)型号:

UserWallet
   "48bde8f8-3b66-40bc-b988-566ccc77335c"
      "F4PvtvNT2Z"
         coins: 26
         someList
            element1
            element2

在上述模型中,我将UserWallet下的电子钱包和用户倒置,以便为用户查找钱包变得更容易.

ref.child('UserWallet').child(auth.uid).addValueEventListener(...

请注意,这里没有涉及任何查询,因此无论您的数据库中有多少用户,加载速度都将相同.

或者:

User
   "48bde8f8-3b66-40bc-b988-566ccc77335c"
      email: "toto@acme.com"
      username: "userTest1"

Wallet
   "F4PvtvNT2Z"
      coins: 26
      someList
         element1
         element2 

UserWallet
   "48bde8f8-3b66-40bc-b988-566ccc77335c"
      "F4PvtvNT2Z"

现在我们已经完成了平整的结构.要确定用户的钱包,请转到UserWaller / $uid,然后从钱包/ $walletid加载每个钱包.它可能是一个更多的代码,但它将是非常有效的(因为没有涉及的查询).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读