Правила Firestore: проверьте, какой элемент массива удален - PullRequest
0 голосов
/ 27 октября 2018

Можно ли проверить, какой элемент массива документов требуется удалить / добавить?

1 Ответ

0 голосов
/ 29 октября 2018

Как вы, наверное, заметили, запросы в Cloud Firestore выполняются очень быстро, и это потому, что Firestore автоматически создает индексы для любых полей, которые есть в вашем документе.

Существует множество публикаций, в которых говорится, что массивы не очень хорошо работают в Cloud Firestore, потому что, когда у вас есть данные, которые могут быть изменены несколькими клиентами, очень легко запутаться, потому что вы не можете знать, что происходит и с чем. конкретное поле. Если вы используете Map и пользователи хотят редактировать несколько различных полей, даже одно и то же поле, мы обычно знаем, что происходит. В массивах все по-другому. Подумайте, что может произойти, если пользователь хочет изменить значение с индексом 0, другой пользователь хочет удалить значение с индексом 0, и в то же время другой пользователь хочет добавить другое значение с индексом 1, вы в конечном итоге с очень разными результатами и почему нет, ArrayIndexOutOfBoundsException . Так что действия Firestore с массивами немного отличаются. Таким образом, вы не можете выполнять такие действия, как вставка, обновление или удаление по определенному индексу. Поэтому используйте массивы только в том случае, если вам не нужен точный порядок хранения элементов. Firestore добавил несколько дней назад некоторые функции для добавления или удаления определенных элементов, но только если их не заботит точное расположение. См. здесь официальная документация.

И чтобы ответить на ваш вопрос:

Можно ли проверить, какой элемент массива документов требуется удалить / добавить?

Нет, вы не можете!

...