Naming and aliasing

This section covers guidelines for naming resources.

Resolving document field name collisions

The document metadata id, coll, and ts fields are reserved. If a document must use a reserved word as a field name, it can be nested in the document data field to avoid colliding with a reserved name. In the following example, the reserved word id is nested in the data field to avoid collision:

{
  id: "<PRODUCT_DOCUMENT_ID>",
  coll: Product,
  ts: Time("2099-06-25T21:16:36.610Z"),
  name: "limes",
  description: "Conventional, 16 oz bag",
  price: 299,
  stock: 30,
  category: Category("<CATEGORY_DOCUMENT_ID>"),
  data: {
    id: "limes"
  }
}

Global namespace prefix

The FQL prefix is reserved to disambiguate global Fauna schema entities and native API names from user-defined entities.

For example, if you define a UDF named log(), you can access the built-in log() method using the FQL prefix:

FQL.log("hello world")

The FQL prefix isn’t required if user-defined names don’t conflict with the global Fauna names.

Schema aliasing

Collections and UDFs accept an alias field that can then be used to reference a resource with a name that conflicts with a reserved schema name. By creating and using an alias, the resource doesn’t have to be renamed.

This example shows how to use a schema alias to rename a Collection:

@alias(myLegacyCollection)
collection "my-legacy-collection" {
}

 

Using the alias keyword to define an alias name allows you to refer to the aliased entity using the alias name in subsequent requests:

MyLegacyCollection.firstWhere(.name < "Z")

 

If the original name doesn’t conflict with an existing name, the entity is available using its name or the alias. If the name does conflict, the entity is available only by the alias.

See also

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!