Дублирование запросов Firebase - PullRequest
0 голосов
/ 06 января 2020

Я выполняю запрос к своей БД и знаю, что будут дублированные записи, есть ли способ избежать получения этих дубликатов в полезной нагрузке функции? Я знаю, что могу отфильтровать его после, но я плачу за эти дубликаты, верно? Плюс, поскольку я хочу только 10, если есть 9 дубликатов, это означает, что я получаю только 1 продукт.

Вот что у меня есть:

getTopSell(city: string) {
    return this.db.collection('products/', ref => ref.where('city', '==', city).limit(10).orderBy('numLikes'))
        .snapshotChanges()
        .pipe(
            map(snaps => {
                return snaps.map(
                    snap => {
                        return { id: snap.payload.doc.id, ...snap.payload.doc.data() } as Product;
                    }
                );
            })
        );
}

1 Ответ

2 голосов
/ 06 января 2020

Firestore не имеет возможности запрашивать документы, которые в некотором роде похожи или не похожи на другие документы в базе данных. Или, другими словами, нет SQL подобных запросов типа соединения. Единственными типами запросов являются те, которые фильтруют и упорядочивают документы из одной коллекции или из «группы коллекции». Фильтрация может выполняться только с использованием указанных c значений, которые вы предоставляете из клиентского приложения - они не могут быть получены из значений других документов, которые еще не были прочитаны.

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

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