Get

Copied!
( ref, [ts] )

Description

The Get function retrieves a single document identified by a Reference. An optional timestamp (ts - a Long) can be provided to retrieve the document version that existed at the specific date and time. If the timestamp is omitted, the default is the current time.

When a Set Reference (from a Match expression) is passed to Get, the first document (based on the sort order of the index) in the set is returned. If the set contains no entries, Get fails with a "set not found" error.

Errors

  • If the document does not exist, a "document not found" error is returned.

    To avoid such errors, use the Exists function in a conditional expression in your query. See the example, below.

  • If the client does not have read permission for the document, a "permission denied" error is returned.

  • If a Set Reference is provided and the set does not exist, or contains no entries, a "set not found" error is returned.

Parameter

Parameter Type Definition and Requirements

ref

A document reference that uniquely identifies a document, or a set reference from a Match call.

ts

Optional - Return the document at the specified point in time (number of UNIX microseconds or Timestamp). The default is the current time.

For large values of ts (positive or negative), you may need to express the value in a String to maintain numeric precision (Fauna uses 64-bit signed integers, whereas JavaScript uses 53-bit signed integers).

Returns

A document containing both the document data and metadata:

Field Name Field Type Definition and Requirements

ref

The reference identifies the document retrieved.

data

Optional - the document data retrieved at the location pointed to by ref.

This field is returned only if the document contains a data field.

ts

The timestamp associated with the creation of the requested document version, according to the ts parameter. Effectively, this timestamp represents the most recent modification of the document as of the ts parameter.

Examples

Retrieve a document by reference

The following query retrieves an document by providing a reference to the collection named "spells" with a specific document ID:

Copied!
((('spells'), '181388642046968320'))
{
  ref: (("spells"), "181388642046968320"),
  ts: 1624310416790000,
  data: {
    name: 'Fire Beak',
    element: [ 'air', 'fire' ],
    spellbook: (("spellbooks"), "181388642139243008")
  }
}
Query metrics:
  •    bytesIn:  65

  •   bytesOut: 347

  • computeOps:   1

  •    readOps:   1

  •   writeOps:   0

  •  readBytes: 214

  • writeBytes:   0

  •  queryTime: 3ms

  •    retries:   0

Fetch multiple documents by reference

To retrieve multiple references in a single operation, use an array to group and return multiple documents. The following example returns three different identifiers from the "spells" collection in a single query. This saves network bandwidth and processing by grouping several requests for data into the same operation.

Copied!
[
  ((('spells'), '181388642046968320')),
  ((('spells'), '181388642071085568')),
  ((('spells'), '181388642088911360'))
]
[
  {
    ref: (("spells"), "181388642046968320"),
    ts: 1624450221980000,
    data: {
      name: 'Fire Beak',
      element: [ 'air', 'fire' ],
      spellbook: (("spellbooks"), "181388642139243008")
    }
  },
  {
    ref: (("spells"), "181388642071085568"),
    ts: 1624450221980000,
    data: {
      name: "Water Dragon's Claw",
      element: [ 'water', 'fire' ],
      spellbook: (("spellbooks"), "181388642139243008")
    }
  },
  {
    ref: (("spells"), "181388642088911360"),
    ts: 1624450219860000,
    data: { name: "Hippo's Wallow", element: [ 'water', 'earth' ] }
  }
]
Query metrics:
  •    bytesIn: 199

  •   bytesOut: 905

  • computeOps:   1

  •    readOps:   3

  •   writeOps:   0

  •  readBytes: 550

  • writeBytes:   0

  •  queryTime: 7ms

  •    retries:   0

Handle "document not found"

The following example demonstrates the use of a conditional expression to handle document existence. Both variations are included by using an array (per the previous example, above).

Copied!
[
  // This document exists
  (
    ((('spells'), '181388642046968320')),
    ((('spells'), '181388642046968320')),
    false
  ),
  // This document does not exist
  (
    ((('spells'), '123')),
    ((('spells'), '123')),
    false
  ),
]
[
  {
    ref: (("spells"), "181388642046968320"),
    ts: 1653348867010000,
    data: {
      name: 'Fire Beak',
      element: [ 'air', 'fire' ],
      spellbook: (("spellbooks"), "181388642139243008")
    }
  },
  false
]
Query metrics:
  •    bytesIn: 295

  •   bytesOut: 355

  • computeOps:   1

  •    readOps:   2

  •   writeOps:   0

  •  readBytes: 127

  • writeBytes:   0

  •  queryTime: 5ms

  •    retries:   0

Is this article helpful? 

Tell Fauna how the article can be improved:
Visit Fauna's forums or email docs@fauna.com

Thank you for your feedback!