Запрос для поиска набора данных путем сопоставления последних символов набора данных

# #firebase #google-cloud-firestore

Вопрос:

Я создаю приложение, в котором я храню записи об автомобилях, и я создаю некоторые фильтры, чтобы найти автомобиль желания. Я создал фильтр для поиска автомобиля по его начальным совпадающим символам

пример

Если есть автомобиль с именем Audi , и если я войду au , это вернет мне автомобиль audi

 db.collection('CARS')
    .orderBy('carName')
    .startAt('aud')  // Looking for aud___
    .endAt('auduf8ff')
    .get()
    .then((querySnapshot) => {...})
    .catch(error => {
        console.log(error);
    });
 

В этом коде я нахожу автомобиль, помещая car name и запрос, чтобы найти данные, первые символы которых совпадают с карнамом

Я хочу почти то же самое в другом запросе, но если я введу какое-то значение, и запрос выдаст мне автомобиль, сопоставив его последние символы

пример

Если у меня есть автомобиль BMW и если я войду MW , то запрос вернет мне автомобиль BMW

Как я могу найти машину, сопоставив последние символы car Name

Ответ №1:

В Firestore нет оператора запроса для поиска с конца строки, поддерживается только поиск по префиксам.

Самый простой способ реализовать этот вариант использования в Firestore-сохранить обратное строковое значение и выполнить поиск по нему.

Поэтому создайте поле reversedCarName и сохраните idua там для audi . Имея это на месте, вы можете искать с конца с помощью:

 db.collection('CARS')
    .orderBy('reversedCarName')
    .startAt('i')  // Looking for ___i
    .endAt('iuf8ff')
 

Комментарии:

1. Блестящий подход!