Check out v4 of the Fauna CLI

v4 of the Fauna CLI is now in beta.

The new version introduces enhancements to the developer experience, including an improved authentication workflow. To get started, check out the CLI v4 quick start.

document.replaceData()

Learn: Documents

Replace a collection document using an object that may contain metadata fields.

Signature

replaceData(data: { *: Any }) => <Document>

Description

Replaces all fields in an collection document with fields from a provided data object. Fields not present in the data object, excluding the id, coll, ts, and data metadata fields, are removed.

This method differs from document.replace() in how it handles reserved fields. See Reserved fields.

Reserved fields

You can’t use this method to insert or edit the following metadata fields:

  • id

  • coll

  • ts

  • data

If the provided data object contains field names that conflict with these metadata fields, the method safely nests values for fields with reserved names in the data field. See Examples.

Parameters

Parameter Type Required Description

data

Object

true

Fields for the collection document. Fields not present in the object, excluding the id, coll, ts, and data metadata fields, are removed.

If the object contains field names that conflict with these metadata fields, the method safely nests values for fields with reserved names in the data field. See Examples.

Return value

Type Description

<Document>

Collection document with replaced fields.

A document’s data type is taken from its collection’s name. For example, Product for a document in the Product collection. See Document type.

Examples

Given the following document:

{
  id: "777",
  coll: Product,
  ts: Time("2099-04-10T16:50:12.850Z"),
  name: "limes",
  description: "Conventional, 16 oz bag",
  price: 2_99,
  stock: 30,
  category: Category("789")
}

Call replaceData() with id and coll fields in the replacement document object. These fields have the same name as reserved metadata fields.

Product.byId("777")?.replaceData({
  id: "12345",
  coll: "Product",
  name: "limes",
  description: "2 ct",
  price: 99,
  stock: 50,
  category: Category.byId("789")
})
{
  id: "777",
  coll: Product,
  ts: Time("2099-04-10T17:54:37.670Z"),
  name: "limes",
  description: "2 ct",
  price: 99,
  stock: 50,
  category: Category("789"),
  data: {
    coll: "Product",
    id: "12345"
  }
}

Rather than return an error, replaceData() treats any field with a reserved name as a document field and nests it in the document’s data property.

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!