Firestore составной, где запрос FieldField не работает - PullRequest
0 голосов
/ 12 апреля 2020

Я построил этот составной запрос whereField, но по какой-то причине он, похоже, не применяет ни один из фильтров. Я передаю данные Dynami c в поле whereFields с помощью поля searchCriteria. Это правильно меняется, но независимо от комбинации, я всегда получаю все записи обратно. Есть идеи, что происходит?

    let dbCollection = db.collection(Constants.FirebaseFirestore.COLLECTION_ITEM)

    dbCollection.whereField(Constants.FirebaseFirestore.ITEM_OWNER_FIELD, isEqualTo: searchCriteria.owner)

    dbCollection.whereField(Constants.FirebaseFirestore.ITEM_CATEGORY_FIELD, isEqualTo: searchCriteria.category)
    dbCollection.order(by: Constants.FirebaseFirestore.ITEM_DATE_CREATED_FIELD, descending: false)

ДАННЫЕ

category "need" (string)
count 10
date_created 1586663033.023617
name "Needs 1"
owner "INvSUJyBwecZgZg0o33dLu3VgGt2"

category "stock" (string)
count 10
date_created 1586664033.023617
name "Stock 1"
owner "INvSUJyBwecZgZg0o33dLu3VgGt2"

1 Ответ

1 голос
/ 12 апреля 2020

Вызов whereField для запроса не изменяет объект запроса, для которого вы вызываете его. Создает новый объект Query с примененным фильтром. Таким образом, вы должны либо следовать шаблону в документации , где они показаны вместе:

let query = db
    .collection(Constants.FirebaseFirestore.COLLECTION_ITEM)
    .whereField(Constants.FirebaseFirestore.ITEM_OWNER_FIELD, isEqualTo: searchCriteria.owner)
    .whereField(Constants.FirebaseFirestore.ITEM_CATEGORY_FIELD, isEqualTo: searchCriteria.category)
    .order(by: Constants.FirebaseFirestore.ITEM_DATE_CREATED_FIELD, descending: false)

, либо помнить новый объект Query при каждом его вызове:

var query = db.collection(Constants.FirebaseFirestore.COLLECTION_ITEM)
query = query.whereField(Constants.FirebaseFirestore.ITEM_OWNER_FIELD, isEqualTo: searchCriteria.owner)
query = query.whereField(Constants.FirebaseFirestore.ITEM_CATEGORY_FIELD, isEqualTo: searchCriteria.category)
query = query.order(by: Constants.FirebaseFirestore.ITEM_DATE_CREATED_FIELD, descending: false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...