Firestore – это гибкая, масштабируемая и бессерверная база данных документов NoSQL, предоставляемая Firebase. Это позволяет разработчикам хранить, извлекать и манипулировать данными в режиме реального времени. Одна из распространенных операций в Firestore — увеличение значения поля. В этой статье мы рассмотрим несколько методов увеличения полей в Firestore и предоставим примеры кода для каждого подхода.
Метод 1: приращение на стороне клиента
Самый простой способ увеличить поле в Firestore — выполнить операцию увеличения непосредственно на стороне клиента с помощью Firebase SDK. Вот пример на JavaScript:
const documentRef = db.collection('collectionName').doc('documentId');
documentRef.update({ fieldToIncrement: firebase.firestore.FieldValue.increment(1) });
Этот метод прост и подходит для увеличения полей, когда клиент имеет прямой доступ к базе данных Firestore.
Метод 2: транзакция
Firestore позволяет выполнять атомарные операции с использованием транзакций, обеспечивая целостность данных в параллельных сценариях. Вот пример увеличения поля с помощью транзакции в JavaScript:
const documentRef = db.collection('collectionName').doc('documentId');
db.runTransaction(transaction => {
return transaction.get(documentRef)
.then(doc => {
const newValue = (doc.data().fieldToIncrement || 0) + 1;
transaction.update(documentRef, { fieldToIncrement: newValue });
});
});
Использование транзакций гарантирует, что операция приращения будет применяться последовательно даже в средах с высоким уровнем параллелизма.
Метод 3. Облачные функции
В некоторых случаях может потребоваться выполнить операции увеличения на стороне сервера с помощью облачных функций. Этот подход полезен, когда вы хотите централизовать логику приращения или запускать приращение на основе определенных условий. Вот пример использования облачных функций с Node.js:
const functions = require('firebase-functions');
exports.incrementField = functions.firestore
.document('collectionName/{documentId}')
.onUpdate((change, context) => {
const newValue = change.after.data().fieldToIncrement + 1;
return change.after.ref.update({ fieldToIncrement: newValue });
});
Эта облачная функция срабатывает всякий раз, когда документ в указанной коллекции обновляется и увеличивает желаемое поле.
В этой статье мы рассмотрели различные методы увеличения полей в Firestore. Метод приращения на стороне клиента подходит для сценариев прямого клиентского доступа, а транзакции обеспечивают атомарность в параллельных средах. Облачные функции обеспечивают серверный подход для централизованного или условного увеличения полей. Используя эти методы, разработчики могут эффективно увеличивать поля в Firestore в соответствии со своими конкретными требованиями.