Как получить документы, у которых есть атрибут, содержащий определенную строку в firestore?

У меня есть коллекция / ПРЕДМЕТЫ с 1 млн документов. Каждый документ имеет форматированную строку атрибута NAME. Я хочу найти и получить все элементы, у которых есть атрибут NAME, содержащий определенную строку, например «byces». Мой код, как показано ниже:

var searchStr = 'byces';    
searchItem(searchStr: string) {
        firebase.firestore().collection('ITEMS')
        .onSnapshot((qSnap)=>{
          let RESULT = [];
          qSnap.docs.forEach(doc=>{
            let ITEM = doc.data();
            let index = ITEM.NAME.toLocaleLowerCase().indexOf(searchStr.toLocaleLowerCase());
            if(index>=0){
              RESULT.push(ITEM);
            }
          })
        })
      }

каждый раз, когда вызывается функция searchItem (), firebase будет взимать с моего проекта 1 миллион операций чтения. Это слишком дорого.

Есть ли предложения по экономии средств? Какие-нибудь рекомендации по этому делу? Спасибо за чтение.

Трудно рекомендовать решение, если мы не знаем, как именно выглядят ваши данные и как их нужно запрашивать. Firestore не имеет запросов на подстроки, поэтому вам нужно будет найти способ заполнения данных в ваших документах, который позволяет точно совпадать с подстроками, которые вы ищете.

Doug Stevenson 11.04.2018 16:23

Как сказал Дуг, подстроки невозможны. Вы можете искать в начале строки. Однако, если вам нужен полнотекстовый поиск, вы должны проверить Cloud Firestore> Полнотекстовый поиск

Jason Berryman 11.04.2018 23:58
0
2
400
0

Другие вопросы по теме