как добавить объект в firestore первый индекс массива объектов - PullRequest
0 голосов
/ 15 апреля 2020

Я гулял по поводу того, как добавить объект в массив в firestore, и обнаружил, что arrayUnion () может добавить объект в массив firestore, но он только добавляет объект в последний индекс массива, но как добавить его в первый индекс массива?

//add "greater_virginia" into last index of array
washingtonRef.update({
    regions: firebase.firestore.FieldValue.arrayUnion("greater_virginia")
});

//how to add "greater_virginia" into first index of array?

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

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

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

{
  0: "first element",
  2: "second and so on",
}

Вы, вероятно, можете видеть, как несменение будет большим преобразованием. Фактически, firestore не позволяет вам сделать это, говоря: «... чтобы избежать некоторых проблем, которые могут возникнуть в многопользовательской среде, вы будете добавлять их с более функциональными настройками». .

Имея это в виду, эту проблему обычно решают на уровне приложения, выбирая массив, изменяя его по мере необходимости, затем устанавливая целое.

Бит для дальнейшего чтения https://firebase.googleblog.com/2018/08/better-arrays-in-cloud-firestore.html

PS: будьте осторожны с оператором arrayUnion, потому что он на самом деле выполняет add to set

0 голосов
/ 15 апреля 2020

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

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

...