使用可选的 key 参数限制 firebase equalTo 查询 [英] Limiting the firebase equalTo query with the optional key parameter

查看:25
本文介绍了使用可选的 key 参数限制 firebase equalTo 查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一种感觉,我可能因为 SQL 背景而对该功能的理解有误.文档很少,我找不到很好的例子或解释.我正在从 https 中寻求对以下内容的澄清://github.com/angular/angularfire2/blob/master/docs/4-querying-lists.md:

I have a feeling I may have the understanding of this feature wrong coming from the SQL background. The documentation is sparse and I haven't been able to find a good example or an explanation. I am looking for a clarification to the following from https://github.com/angular/angularfire2/blob/master/docs/4-querying-lists.md:

1 Firebase SDK 支持 startAt 的可选关键参数,endAt 和 equalTo 按子项、值或优先级排序时.你可以使用包含的对象字面量指定关键参数值和键.例如: startAt: { value: 'some-value', key:'some-key' }.

1 The Firebase SDK supports an optional key parameter for startAt, endAt, and equalTo when ordering by child, value, or priority. You can specify the key parameter using an object literal that contains the value and the key. For example: startAt: { value: 'some-value', key: 'some-key' }.

我想使用这个可选的键参数来限制我的按时间戳值排序查询 (orderByChild),以将结果限制为子键具有指定值的结果.

I want to limit my ordered-by-timestamp-value query (orderByChild) using this optional key parameter to restrict the results only to those were a child key has a specified value.

this.angularFireDatabase.list('/items', {
  query: {
    orderByChild: 'uploadedOn_',
    equalTo: { key: 'user_uid', value: 'fSXX9twkttYqoS67mcRUmPawIep1' }
  }
});

// JSON 
{
  "items" : {
    "-KijNTXRKV5rjXEA7NdO" : {
      "uploadedOn_" : -1493296081615,
      "user_uid" : "fSXX9twkttYqoS67mcRUmPawIep1"
    },
    "-KijNoB4MivU4Ts6XgUV" : {
      "uploadedOn_" : -1493296169733,
      "user_uid" : "fSXX9twkttYqoS67mcRUmPawIep1"
    },
    "-KijbTMBydwQexbbErlk" : {
      "uploadedOn_" : -1493300012491,
      "user_uid" : "EAsIjLDFPRZDTq97qGQQyS7sBul1"
    }
  }
}

也许,当我应该以不同的方式构建数据时,我正试图模仿 where SQL 子句.看来这个可选的key 参数只能是item 自己的key.在我的示例中,它是常规自动生成的 Firebase 推送密钥(例如 "-KijNTXRKV5rjXEA7NdO").但在这种情况下,如果结果将始终是您可以通过的单个项目,我很困惑将 equalToorderByChild 一起使用的用例是什么不使用可选的 key 参数.

Perhaps, I'm trying to mimic the where SQL clause when instead I should be structuring my data differently. It seems that this optional key parameter can only be the item's own key. In my example it's the regular auto-generated Firebase push key (e.g. "-KijNTXRKV5rjXEA7NdO"). But in this case I'm confused as to what the use case would be to use equalTo together with orderByChild if the result will always be a single item you could get to by NOT using the optional key parameter.

推荐答案

如果你这样做 ref.orderBy("prop").equalTo("value", "key") 它会给与 ref.child("key") 的结果相同.equalTo() 的第二个参数本质上是无用的(与 startAt()endAt() 不同,它可用于切片范围.

If you do ref.orderBy("prop").equalTo("value", "key") it'll give the same results as ref.child("key"). The second parameter for equalTo() is essentially useless (unlike for startAt() and endAt(), where it can be used to slice a range.

另见:

这篇关于使用可选的 key 参数限制 firebase equalTo 查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆