Transaction
Source: transaction.
A reference to a transaction.
The Transaction object passed to a transaction's updateFunction provides the methods to read and write data within the transaction context. See runTransaction().
Methods
create(documentRef, data) → Transaction
Create the document referred to by the provided DocumentReference. The operation will fail the transaction if a document exists at the specified location.
Example
firestore.runTransaction(transaction => {
let documentRef = firestore.doc('col/doc');
return transaction.get(documentRef).then(doc => {
if (!doc.exists) {
transaction.create(documentRef, { foo: 'bar' });
}
});
});
Parameters
| Name | Type | Optional | Description |
|---|---|---|---|
|
documentRef |
|
A reference to the document to be created. |
|
|
data |
|
The object data to serialize as the document. |
- Returns
-
This Transaction instance. Used for chaining method calls.
delete(documentRef[, precondition]) → Transaction
Deletes the document referred to by the provided [DocumentReference] DocumentReference.
Example
firestore.runTransaction(transaction => {
let documentRef = firestore.doc('col/doc');
transaction.delete(documentRef);
return Promise.resolve();
});
Parameters
| Name | Type | Optional | Description | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
documentRef |
|
A reference to the document to be deleted. |
|||||||||
|
precondition |
Yes |
A precondition to enforce for this delete. Values in
|
- Returns
-
This Transaction instance. Used for chaining method calls.
get(refOrQuery) → Promise
Retrieve a document or a query result from the database. Holds a pessimistic lock on all returned documents.
Example
firestore.runTransaction(transaction => {
let documentRef = firestore.doc('col/doc');
return transaction.get(documentRef).then(doc => {
if (doc.exists) {
transaction.update(documentRef, { count: doc.get('count') + 1 });
} else {
transaction.create(documentRef, { count: 1 });
}
});
});
Parameter
| Name | Type | Optional | Description |
|---|---|---|---|
|
refOrQuery |
(DocumentReference or Query) |
|
The document or query to return. |
- Returns
-
PromiseA Promise that resolves with a DocumentSnapshot or QuerySnapshot for the returned documents.
getAll(...documentRefsOrReadOptions) → Promise containing Array of DocumentSnapshot
Retrieves multiple documents from Firestore. Holds a pessimistic lock on all returned documents.
The first argument is required and must be of type DocumentReference
followed by any additional DocumentReference documents. If used, the
optional ReadOptions must be the last argument.
Example
let firstDoc = firestore.doc('col/doc1');
let secondDoc = firestore.doc('col/doc2');
let resultDoc = firestore.doc('col/doc3');
firestore.runTransaction(transaction => {
return transaction.getAll(firstDoc, secondDoc).then(docs => {
transaction.set(resultDoc, {
sum: docs[0].get('count') + docs[1].get('count')
});
});
});
Parameter
| Name | Type | Optional | Description |
|---|---|---|---|
|
documentRefsOrReadOptions |
(repeatable DocumentReference or ReadOptions) |
|
The
Value can be repeated. |
- Returns
-
Promise containing Array of DocumentSnapshotA Promise that contains an array with the resulting document snapshots.
set(documentRef, data[, options]) → Transaction
Writes to the document referred to by the provided DocumentReference. If the document does not exist yet, it will be created. If you pass SetOptions, the provided data can be merged into the existing document.
Example
firestore.runTransaction(transaction => {
let documentRef = firestore.doc('col/doc');
transaction.set(documentRef, { foo: 'bar' });
return Promise.resolve();
});
Parameters
| Name | Type | Optional | Description | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
documentRef |
|
A reference to the document to be set. |
|||||||||||||
|
data |
|
The object to serialize as the document. |
|||||||||||||
|
options |
Yes |
An object to configure the set behavior. Values in
|
- Returns
-
This Transaction instance. Used for chaining method calls.
update(documentRef, dataOrField, ...preconditionOrValues) → Transaction
Updates fields in the document referred to by the provided DocumentReference. The update will fail if applied to a document that does not exist.
The update() method accepts either an object with field paths encoded as keys and field values encoded as values, or a variable number of arguments that alternate between field paths and field values. Nested fields can be updated by providing dot-separated field path strings or by providing FieldPath objects.
A Precondition restricting this update can be specified as the last argument.
Example
firestore.runTransaction(transaction => {
let documentRef = firestore.doc('col/doc');
return transaction.get(documentRef).then(doc => {
if (doc.exists) {
transaction.update(documentRef, { count: doc.get('count') + 1 });
} else {
transaction.create(documentRef, { count: 1 });
}
});
});
Parameters
| Name | Type | Optional | Description |
|---|---|---|---|
|
documentRef |
|
A reference to the document to be updated. |
|
|
dataOrField |
(UpdateData, string, or FieldPath) |
|
An object containing the fields and values with which to update the document or the path of the first field to update. |
|
preconditionOrValues |
(Precondition, any type, string, or FieldPath) |
|
An alternating list of field paths and values to update or a Precondition to to enforce on this update. Value can be repeated. |
- Returns
-
This Transaction instance. Used for chaining method calls.