Прежде всего импортируйте Angular Firestore в сервисный файл и создайте псевдоним в конструкторе.

import { AngularFirestore } from '@angular/fire/firestore';
  constructor(
    private firestore: AngularFirestore
  ) { }

Чтобы создать собственный идентификатор в firestore, мы используем ключевое слово set.

this.firestore.collection(mycollectionname).doc(myCustomId).set(data);
Example:- Assume collection name is users, and custom id 'VK' with some data
let data = {
  firstName: 'Vikas', lastName: 'Kohli'
}
this.firestore.collection('users').doc('VK').set(data);//overwrite or creaate new document

Приведенный выше оператор создаст новый документ с настраиваемым идентификатором «VK» в коллекции пользователя. Кроме того, если какой-либо документ с пользовательским идентификатором ВКонтакте уже существует, эти данные также будут переопределены.

Для справки:- https://firebase.google.com/docs/firestore/manage-data/add-data#set_a_document

  • Вставьте данные в массив, если он не создан, создайте этот ключ и добавьте его.

Прежде всего, нам нужно импортировать firebase для использования Firestore arrayUnion или arrayRemove.

import * as firebase from "firebase/app";

теперь мы можем использовать arrayUnion, например firebase.firestore.FieldValue.arrayUnion или firebase.firestore.FieldValue.arrayRemove.

Для добавления данных в массив

addingInArray(key: string, arrKey: string, data: any) {
    return this.firestore.doc('users/' + key).set(
       { [arrKey]:  firebase.firestore.FieldValue.arrayUnion(data), updated: new Date() },
       { merge: true }
    );
  }

Для удаления данных в массиве

removeDataFromArray(key: string, arrKey: string, data: any) {
    return this.firestore.doc('users/' + key).set(
       { [arrKey]:  firebase.firestore.FieldValue.arrayRemove(data), updated: new Date() },
       { merge: true }
    );
  }

Давайте рассмотрим пример добавления данных в массив:

Adding
this.firestore.doc('users/' + 'VK').set(
       { hobbies:  firebase.firestore.FieldValue.arrayUnion({name: "Watching Moviews", short: "w"}), updated: new Date() },
       { merge: true }
    );

Здесь выше я добавил один объект в хобби, если хобби не создано, то оно будет создано автоматически.

Если массив хобби уже создан, он добавит этот объект в массив хобби

Кроме того, я обновил поле, которое я обновляю до текущей даты.

Использование merge: true помогает объединить существующий документ, если он есть.

Теперь рассмотрим пример удаления данных в массиве:

Removing
this.firestore.doc('users/' + 'VK').set(
       { hobbies:  firebase.firestore.FieldValue.arrayRemove({name: "Watching Moviews", short: "w"}), updated: new Date() },
       { merge: true }
    );

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

Обновление и удаление элементов из массива — https://firebase.google.com/docs/firestore/manage-data/add-data#update_elements_in_an_array

Аналогично это можно сделать и в javascript

Счастливого облака с Firestore 😊