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

DocumentReference

 

A reference to the document to be created.

data

DocumentData

 

The object data to serialize as the document.

Returns

Transaction 

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

DocumentReference

 

A reference to the document to be deleted.

precondition

Precondition

Yes

A precondition to enforce for this delete.

Values in precondition have the following properties:

Name Type Optional Description

lastUpdateTime

Timestamp

Yes

If set, enforces that the document was last updated at lastUpdateTime. Fails the transaction if the document doesn't exist or was last updated at a different time.

Returns

Transaction 

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

Promise 

A 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 DocumentReferences to receive, followed by an optional field mask.

Value can be repeated.

Returns

Promise containing Array of DocumentSnapshot 

A 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

DocumentReference

 

A reference to the document to be set.

data

DocumentData

 

The object to serialize as the document.

options

SetOptions

Yes

An object to configure the set behavior.

Values in options have the following properties:

Name Type Optional Description

merge

boolean

Yes

If true, set() merges the values specified in its data argument. Fields omitted from this set() call remain untouched.

mergeFields

Array of (string or FieldPath)

Yes

If provided, set() only replaces the specified field paths. Any field path that is not specified is ignored and remains untouched.

Returns

Transaction 

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

DocumentReference

 

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

Transaction 

This Transaction instance. Used for chaining method calls.