Этот запрос не работает, потому что ваше поле users
является картой, а не массивом.
.whereArrayContains(House.USERS_FIELD, currentUser.getUid())
Этот запрос
.whereEqualTo("users." + currentUser.getUid(), currentUser.getUid())
не работает, потому что значение вашей карты для users.<uid>
является строкой, которая говорит percentage: xx%
, и этот оператор проверяет, если percentage: xx% === <uid>
, что ложно.
И эта стратегия будет проблематичной, поскольку вы не можете выполнять запросы, чтобы найти элементы, которые «не равны нулю» или «строки не пусты» и т. Д.
Я предполагаю, что это процентная доля владения пользователя в доме (?). Если это так, возможно, вам больше повезет, если вы попытаетесь структурировать данные своего домашнего документа, как это, если хотите сохранить ту же структуру документа, что и в вашем вопросе
{
name: "The Residence",
users: {
uid1: 80,
uid2: 20
}
}
Это позволит вам сделать запрос, такой как
.whereGreaterThan("users." + currentUser.getUid(), 0)
чтобы найти пользователей, которым принадлежат доли в этом доме.
Но справедливое предупреждение: как только вам понадобится составные индексы , у вас начнутся проблемы с поддержкой этой структуры. Вместо этого вы можете захотеть сохранить массив пользователей, владеющих этим домом, для удобства запросов.