Чтобы обновить поле документа Firebase в приложении Angular, вы можете использовать несколько методов. Вот несколько часто используемых подходов:
Метод 1. Использование Firebase Firestore SDK
- Импортируйте необходимые модули Firebase и Angular Firestore в свой компонент.
- Получите ссылку на документ с помощью метода
doc()из службы Firestore. - Вызовите метод
update()для ссылки на документ, передав объект с полем, которое вы хотите обновить, и его новым значением.
Вот пример фрагмента кода:
import { AngularFirestore } from '@angular/fire/firestore';
// Inject the AngularFirestore service in your component's constructor
constructor(private firestore: AngularFirestore) {}
// Update the document field
updateDocumentField(documentId: string, field: string, newValue: any): Promise<void> {
const documentRef = this.firestore.collection('yourCollectionName').doc(documentId);
return documentRef.update({ [field]: newValue });
}
Метод 2: использование библиотеки AngularFire
- Импортируйте необходимые модули AngularFire в свой компонент.
- Используйте метод
update(), предоставляемый объектомAngularFirestoreDocument, чтобы обновить поле.
Вот пример фрагмента кода:
import { AngularFirestore, AngularFirestoreDocument } from '@angular/fire/firestore';
// Inject the AngularFirestore service in your component's constructor
constructor(private firestore: AngularFirestore) {}
// Update the document field
updateDocumentField(documentId: string, field: string, newValue: any): Promise<void> {
const documentRef: AngularFirestoreDocument = this.firestore.doc(`yourCollectionName/${documentId}`);
return documentRef.update({ [field]: newValue });
}
Метод 3. Использование Firebase REST API
- Отправьте запрос HTTP PATCH к конечной точке Firebase REST API документа, предоставив обновленное значение поля.
Вот пример фрагмента кода:
import { HttpClient } from '@angular/common/http';
// Inject the HttpClient service in your component's constructor
constructor(private http: HttpClient) {}
// Update the document field
updateDocumentField(documentId: string, field: string, newValue: any): Observable<any> {
const apiUrl = `https://firestore.googleapis.com/v1/projects/yourProjectId/databases/(default)/documents/yourCollectionName/${documentId}`;
const payload = { fields: { [field]: { stringValue: newValue } } };
return this.http.patch(apiUrl, payload);
}