Добавляет ли arrayUnion () Google Firebase данные в конец массива? - PullRequest
1 голос
/ 13 июля 2020

Я не могу найти подтверждение в StackOverflow или документах Google:

https://firebase.google.com/docs/firestore/manage-data/add-data#update_elements_in_an_array

Если я использую arrayUnion() для добавления в массив Firebase, что Firebase делает заказ? Он добавляется в конец? Если элемент уже существует, скажем, на полпути в массиве [a, b, EXISTS, c], тогда arrayUnion() просто оставит его на месте?

Мне нужно поддерживать список контактов, упорядоченный по Person последний разговор, по сути, неявная хронология. Возможно, список необходимо переупорядочивать каждый раз при получении нового сообщения. Мне интересно, лучше ли arrayRemove(), а затем arrayUnion() перетасовать последнее общение Person или проверить, нужно ли изменять массив, и просто перестроить весь массив и использовать транзакцию.

Могут происходить одновременные мутации в моем массиве контактов, поэтому представляет интерес метод, который Firebase может обработать быстрее всего.

1 Ответ

1 голос
/ 13 июля 2020

Как уже упоминалось, Здесь элементы, которые уже находятся в массиве, не добавляются, и только новые элементы добавляются в конец массива.

Допустим, у вас есть массив [A,B,C] и используйте arrayUnion с [A.D,Z] Результирующий массив будет: [A,B,C,D,Z]

Чтобы сохранить указанный порядок, arrayRemove() и arrayUnion() работают, однако для повышения производительности имейте в виду, что это эффективно только при добавлении и удалении нескольких элементов за один раз. время.

...