在 AngularFire2 中查询列表以获取具有非空值和可选 "key" 参数的可用项目

Query a list in AngularFire2 for available items with non-null values & optional "key" parameter

我在 AgularFire2 中做一个查询,我在其中查找具有某些特定 属性 的项目(值不重要,只要该特定项目具有一些值就足够了),方法是对 startAt,它按预期工作。

由于 Beta 8 可以在查询中使用 "optional key value" (startAtendAtequalTo) ,我只想获取某些元素,从给定的 key.

这是一个例子:

[
  {"$key": "a", "email":"alice@gmail.com","name":"Alice"},
  {"$key": "b", "email":"bob@gmail.com","name":"Bob"},
  {"$key": "m", "name":"Malory"}
]

此查询不仅 return "Bob",还有 Bob 和 Alice:

    query: {
      startAt: { value: '', key: 'b'},
      orderByChild: 'email'
    }

这里是Plunkr.

更新:(举例说明我想要实现的目标)

假设我们的数据库中有一个列表 dealers,每个经销商的库存中都有一种或多种 vehicles(卡车、公共汽车、汽车等):dealers/{dealerUid}/inventory

我首先尝试使用深层路径(如:orderByChild: 'inventory/cars')并看到了意外行为,但在第一级查询中也会发生同样的情况。 (假设我只想获得库存中有汽车的经销商,但从某个 uid({dealerUid}) 开始,并非所有经销商都有库存中的汽车。

要么我做错了什么,要么有错误。

可选键用于区分指定值的多个匹配项。来自 SDK documentation:

The optional key argument can be used to further limit the range of the query. If it is specified, then children that have exactly the specified value must also have a key name greater than or equal to the specified key.

您没有匹配您指定的值,并且数据库中的所有值都在您指定的值之后排序,因此返回所有子项。

您看到的是预期的行为。