Принудительно объединить массив Firestore со значением, которое уже является частью массива - PullRequest
3 голосов
/ 13 октября 2019

Существует метод arrayUnion(), который мы используем для добавления дополнительного элемента в существующий массив. Однако при добавлении значения, которое уже существовало в массиве, оно не собирается объединяться, а просто собирается сохранить один элемент вместо двух.

Example:
Existing array = [2]
ArrayUnion([2])...
Resultant array [2]


Example 2;
Existing array = [3];
ArrayUnion([2])...
Resultant Array = [3, 2];

Как сделать так, чтобы результирующий массив в первом примере был [2, 2]?

1 Ответ

2 голосов
/ 13 октября 2019

Из документации для arrayUnion:

Возвращает специальное значение, которое можно использовать с set() или update(), которое указывает серверу объединять данныеэлементы с любым значением массива, которое уже существует на сервере. Каждый указанный элемент , который еще не существует в массиве , будет добавлен в конец. Если изменяемое поле уже не является массивом, оно будет перезаписано массивом, содержащим точно указанные элементы.

Оператор arrayUnion гарантирует, что каждое уникальное значение существует не более одного раза в массиве. Невозможно добавить дублирующееся значение с помощью arrayUnion.

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

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