Я использую Cloud Firestore в своем приложении и имею 2 коллекции Customers
и Properties
.У меня есть действие, при котором пользователь может обновить данные, содержащиеся в адресе имени документа клиента и т. Д. Этот код, показанный ниже, работает нормально.
db.collection("Customers").document(customer.getCustomerId())
.update(
"name", c.getName(),
"email", c.getEmail(),
"phoneNo", c.getPhoneNo(),
"address", c.getAddress(),
"creatorId", c.getCreatorId()
)
.addOnCompleteListener(new OnCompleteListener<Void>() {
У меня есть ссылка на документ клиентов, сохраненная в документах свойств.так что я могу сослаться на то, какому клиенту принадлежит какое имущество.Используя эту ссылку, я хочу найти Свойства, содержащие эту ссылку, и обновить поле имени, если оно было изменено.Я пытался добавить код в свой метод после того, как onComplete проверяет приведенный выше код, но он не обновляет поле имени каждый раз только через каждые несколько попыток.
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference propRef = rootRef.collection("Properties");
propRef.whereEqualTo("customerId", customerId).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : Objects.requireNonNull(task.getResult())) {
Map<Object, String> map = new HashMap<>();
map.put("customer", customerName);
propRef.document(document.getId()).set(map, SetOptions.merge()).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Есть ли способ добиться того, чтоЯ пытаюсь сделать?Я действительно думал, что смогу сделать это, используя пакет, но из того, что я прочитал, это не позволяет искать.
@ AlexMamo
Это документ из моей коллекции клиентов
Это связанный документ с моейКоллекция недвижимости
Структура клиентов
Структура свойств