Как запросить массив объектов, содержащий значение поля firebase angular? - PullRequest
2 голосов
/ 08 января 2020

У меня есть следующий документ:

"players" : [ 
  {
    "id" : userid,
    "name" : "dissident"
  }, 
  {
    "teamId" : teamId,
    "name" : "ink"
  }
]

Это то, что я пытался, но он не работает

this.afs.collection('matches', ref => ref.where('players', 'array-contains', {teamId: teamId}))

Ответы [ 2 ]

1 голос
/ 08 января 2020

Ваша ошибка следующая:

FirebaseError: Функция Query.where () вызвана с неверными данными. Неподдерживаемое значение поля: undefined (найдено в поле teamId)

Это означает, что вы передали в запросе недопустимое значение undefined для teamId, что недопустимо. Вы должны отладить свой код и выяснить, почему teamId не определено, а затем исправить это.

0 голосов
/ 08 января 2020

Чтобы решить эту проблему, измените следующую строку кода:

this.afs.collection('matches', ref => ref.where('players', 'array-contains', {teamId: teamId}))

на

this.afs.collection('matches', ref => ref.where('players', 'array-contains', {teamId: teamId, name : 'ink'}))

Как видите, это действительно возможно только если вы запрашиваете весь объект. Но имейте в виду, что, как упоминал Даг Стивенсон в своем ответе, если вы передадите недопустимое значение undefined для teamId или для name, вы всегда получите сообщение об ошибке, о которой говорите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...