从Firebase检索完全不同的密钥
我使用从Firebase检索完全不同的密钥,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我使用orderByKey从Firebase按键请求数据。如果关键点相似,我可以得到多个对象——以相同的字符串开始或结束 但是,如何通过一个对Firebase的请求检索完全不同的密钥,例如“n:1-2-3”和“n:2-3-4”?我使用的是equalTo,但是我可以在那里指定多个键吗 我知道如何处理不同的请求-每个键一个请求,但这不是最佳的。目前firebase只支持一种条件。下文对此进行了详细解释:- 如果假设您有两个键,分别是a123和a234,则要检索,您可以执行以下操作: Database
orderByKey
从Firebase按键请求数据。如果关键点相似,我可以得到多个对象——以相同的字符串开始或结束
但是,如何通过一个对Firebase的请求检索完全不同的密钥,例如“n:1-2-3”和“n:2-3-4”?我使用的是equalTo
,但是我可以在那里指定多个键吗
我知道如何处理不同的请求-每个键一个请求,但这不是最佳的。目前firebase只支持一种条件。下文对此进行了详细解释:- 如果假设您有两个键,分别是
a123
和a234
,则要检索,您可以执行以下操作:
DatabaseReference ref=FirebaseDatabase.getInstance().getReference();
ref.orderByKey().startAt("a").limitToLast(10).addValueEventListener(..){..}
limitToLast()方法用于为给定回调设置要同步的最大子级数
您可以使用limittolast或limittofirst来限制从数据库获得的结果。
目前firebase仅支持一种情况。因此,您不能有一个以上的
orderbykey
或orderbychild
或两者一起..显示一个数据库示例并解释更多请,哦,我想我理解您想要多个条件,不,这是不可能的。你能做的最多的就是orderbykey()。equalTo(这里的key_)在思想上,为什么我可以一次请求“animal_dog”和“animal_horse”,而不是“a123”和“a234”?你可以,你需要使用startAt()@PeterHaddad如果我使用startAt(“a”),它将返回我100万个结果。我只想要两个“a123”和“a234”。问题是它们不是最后一个,我不知道顺序。例如,“a123”的位置为3453,“a234”的位置为4357623。我不能在我的情况下使用startAt()。我最初的问题是:我能读懂完全不同的键吗,例如“qwe”和“rty”。正如我在回答中所说的,逻辑上,读懂两个不同的键需要满足多种条件,但由于你只能满足一个条件,所以不能满足,你最多只能满足orderBykey()正文开头的“目前firebase只支持一个条件”。这将帮助其他人更快。谢谢。