Как обновить элемент массива в Firestore - PullRequest
0 голосов
/ 12 декабря 2018

Согласно новой документации Firestore, я вижу 2 новых метода (arrayUnion, arrayRemove) для работы с массивами, вложенными в документы.Эти методы позволяют вам добавлять и удалять элементы массива, но как мне обновить существующий элемент?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Нет метода обновления, потому что если вы хотите выполнить обновление, вам нужно знать индекс этого конкретного элемента.Говоря о массивах Cloud Firestore, вы думаете, что все по-другому.

Поскольку мы создаем приложения, которые можно использовать в многопользовательской среде, попробуйте подумать, что может произойти, если пользователь захочет отредактироватьзначение с индексом 0, другой пользователь хочет удалить значение с индексом 0, и в то же время другой пользователь может захотеть добавить еще один элемент с индексом 0. Наверняка у вас будут очень разные результаты, и почему нет,получить даже ArrayIndexOutOfBoundsException .Так что действия Firestore с массивами немного отличаются.Таким образом, вы не можете выполнять такие действия, как вставка, обновление или удаление по определенному индексу.

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

0 голосов
/ 12 декабря 2018

Если модификация массива не выполняется с помощью arrayUnion или arrayRemove, вам придется прочитать документ, изменить значения массива в памяти, а затем обновить поле массива новым массивом во всей его полноте.

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