对象上的 Angular firestore array_contains

Swo*_*oox 8 firebase angular google-cloud-firestore

我有以下文件:

{
    "ID" : "01",
    "Name" : "A1",
    "players" : [ {
        "active" : false,
        "name" : "dissident"
      }, {
        "active" : false,
        "name" : "ink"
      }
    ]
}
Run Code Online (Sandbox Code Playgroud)

用 JSON 写下来,这样更容易理解。现在我想对 firestore 做的是查询玩家 [*].name。我已经看到了使用“array_contains”的新选项。

但是我已经看到所有示例都使用字符串数组而不是对象数组。是否可以查询玩家[*].name?

这是我尝试过的:

this.afs.collection('Locations', ref => ref.where('players.name', 'array-contains', _name))
Run Code Online (Sandbox Code Playgroud)

基于@camden_kid 反应我建立:

this.locationsCollection = this.afs.collection('Locations', ref => ref.where('players', 'array-contains', {active : false, name : _name}) );
if(this.locationsCollection === undefined){
    this.locationsCollection = this.afs.collection('Locations', ref => ref.where('players', 'array-contains', {active : true, name : _name}) );
}
Run Code Online (Sandbox Code Playgroud)

但这取决于活动值,这不适用于所有情况。

cam*_*kid 6

您可以尝试针对整个对象进行测试,例如

this.afs.collection('Locations', ref => ref.where('players', 'array-contains', {active : false, name : _name}))
Run Code Online (Sandbox Code Playgroud)