массив содержит не извлекаемый результат в 2-мерном массиве - PullRequest
0 голосов
/ 28 апреля 2020

Я сохраняю данные в документе, как на картинке ниже. Я хочу получить записи из массива notifyArray, ctg, где array-contains Burger .

Это код, который я пытаюсь:

  firebase.firestore().collection(`notifications`)
  .where("notifyArray", "array-contains", 'Burger')
  .onSnapshot(querySnapshot=> {           
  querySnapshot.forEach(doc=> {
      console.log(doc.data());
      console.log("Search result");
      var data = Object.assign(doc.data(), {docid : doc.id})
      this.goalList1.push(data);
  });
  console.log(this.goalList1);
  });

Но это не возвращает никакого результата. В идеале должно возвращаться 2 записи.

enter image description here

1 Ответ

1 голос
/ 28 апреля 2020

Массив notifyArray - это массив карт, каждая из которых содержит два свойства. Firestore не поддерживает запрос свойств карты в массиве. Вы можете искать только все содержимое карты, что означает, что вы должны знать все значения всех ее полей.

Вместо этого вы можете создать новый массив, содержащий только строковые значения свойства food на карте, а затем запрос этого массива.

firebase.firestore()
    .collection(`notifications`)
    .where("foodArray", "array-contains", 'Burger')

Выше, запрос ожидает, что существует массив строк с именем foodArray.

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