Невозможно применить запрос к коллекции Firebase - PullRequest
0 голосов
/ 08 мая 2019

По сути, я хочу найти данные по имени пользователя (это поле displayName)

Ниже показано, как выглядит моя коллекция профилей.

enter image description here

async localUsers(){       
        await authorizePromise;
        const {radius} = UserStateService.getState();
        console.info('Getting local users with radius', radius);

        const opts = {
            ...proximityHashOpts,
            ...proximityRangeOpts[radius],
            ...store.position,
        };

        const hashes = proximityhash.createGeohashes(opts);

        const profiles = firebase.firestore().collection('profiles');

        let queries = hashes.map(hash => rangeQueryParams(hash))
            .map(range => profiles.where('hash', '>=', range.start).where('hash', '<', range.end).get());

        const ME = UserProfileStore.getProfile();

        const results = await Promise.all(queries);

        return []
            .concat(...results.map(_ => _.docs))
            .filter(_ => !UserProfileStore.isForbiddenRelationship(_.id || _.id === ME.id))
            .filter(_ => _.data().visible !== false)
            .sort((a, b) =>{
                return b.data()['lastSeen'] - a.data()['lastSeen'];
            });
    }

Так что выше localUsers функция здесь выбирает данные из коллекции «профилей», и где эта строка where('hash', '>=', range.start).where('hash', '<', range.end). выбирает данные на основе хеша Поле.

Но я хочу получить данные на основе displayName Поле и изменить переменную запросов, как показано ниже.

 let queries = hashes.map(hash => rangeQueryParams(hash))
            .map(range => profiles
            .where('hash', '>=', range.start).where('hash', '<', range.end)
            .orderBy('hash')
            .orderBy('displayName')
            .startAt(username)        // username is the value user enters
            .endAt(username + '\uf8ff')
            .get()); 

И вышеупомянутые запросы ничего не возвращают.

Я знаю, что код кажется сложным, он и для меня тоже, потому что я делаю редизайн этого приложения, которое уже есть в Google Play.

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