在 AngularFire2 中查询列表以获取具有非空值和可选 "key" 参数的可用项目
Query a list in AngularFire2 for available items with non-null values & optional "key" parameter
我在 AgularFire2 中做一个查询,我在其中查找具有某些特定 属性 的项目(值不重要,只要该特定项目具有一些值就足够了),方法是对 startAt
,它按预期工作。
由于 Beta 8 可以在查询中使用 "optional key value" (startAt
、endAt
和 equalTo
) ,我只想获取某些元素,从给定的 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.
您没有匹配您指定的值,并且数据库中的所有值都在您指定的值之后排序,因此返回所有子项。
您看到的是预期的行为。
我在 AgularFire2 中做一个查询,我在其中查找具有某些特定 属性 的项目(值不重要,只要该特定项目具有一些值就足够了),方法是对 startAt
,它按预期工作。
由于 Beta 8 可以在查询中使用 "optional key value" (startAt
、endAt
和 equalTo
) ,我只想获取某些元素,从给定的 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.
您没有匹配您指定的值,并且数据库中的所有值都在您指定的值之后排序,因此返回所有子项。
您看到的是预期的行为。