Изменить значение одного элемента в массиве - firestore - PullRequest
1 голос
/ 23 мая 2019

У меня есть следующая настройка для структуры данных:

users
|-name
|-id

businesses
|-name
|-id
|-owners
||[0]
||-name
||-id
||[1]
||-name
||-id

reviews
|-id
|-description
|-authorId
|-authorName

На основании видео и постов в блоге я знаю, что могу удалять элементы и добавлять элементы, используя новую функциональность массива с 2018 года.Есть ли способ передать конкретную ссылку на метод обновления для обновления определенного значения, например, владелец [1] .name?

Посмотрел видео об обновлениях Multipath, прочитал пост в блоге о массивах, искал вокругпримеры выполнения многопутевых обновлений, попытка прочитать о различных методах обновления массивов в StackOverflow.

    db.collection("businesses").whereArrayContains("owners",userId).get()
            .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                    for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                        DocumentReference ref =db.collection("businesses").document(documentSnapshot.getId());
                        batch.update(ref, "Name", editText.getText().toString().trim());
                    }

1 Ответ

0 голосов
/ 23 мая 2019

Нет, операции с собственным массивом работают только с целыми элементами в поле типа списка. Вы не можете вызвать конкретное свойство объекта в массиве. Если вы хотите изменить свойство объекта в списке, вы должны прочитать документ, изменить список в своем коде, а затем обновить все поле обратно до документа. Вы не сможете сделать это с помощью одной операции.

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