Чтобы получить доступ к doc.data().IndexOf
или doc.data().includes
или любым другим функциям, связанным с массивом, просто преобразуйте doc.data()
в массив следующим образом:
var docArray = Object.values(doc.data());
docArray.includes(stringToSearchFor);
или
Object.values(doc.data()).includes(stringToSearchFor);
это позволит вам запускать docArray.includes
и docArray.IndexOf
. Причина преобразования заключается в том, что firebase возвращает весь do c, который является объектом объектов, вы можете увидеть это в console.log (do c .data ()) и увидеть поле прототипа. Это происходит потому, что firestore хранит в массиве объект json, что означает, что номера индексов массива, которые вы видите, на самом деле не являются индексными номерами, а просто ключами объектов.
означает
0: example@gmail.com
1: firebase@gmail.com
2: new@gmail.com
где 0, 1, 2
- это индекс (или, как кажется), а example@gmail.com, firebase@gmail.com, new@gmail.com
- значение, но в firestore 0, 1, 2
на самом деле просто ключи, а не индекс. Итак, чтобы получить либо ключ (числа), либо значения (электронные письма), мы просто запускаем Object.keys(doc.data())// will return numbers
или Object.values(doc.data())//will return emails
, и вы получите массив, который вам нужен, и теперь вы можете запускать операции с этим массивом.