Прежде всего импортируйте 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 😊