@unique directive

Specifies the name of a Fauna index that enforces a uniqueness constraint.

Schema location

This directive is valid for field declarations in a Type declaration within a GraphQL schema.


Argument Type Required Description




The name for the unique index to use.


The @unique directive marks a field as being unique. Unique fields have an associated unique index within the database, and it is the index that performs the uniqueness constraint.

When the associated index does not exist, the GraphQL API automatically creates one. The index argument controls the name of the unique index. By default, the index name uses this template: unique_<type name>_<field name>.

When your @unique directive specifies the name of an existing index, if the index definition does not match your type, your queries may result in errors due to the shape of your type being incompatible with the index definition.


When the following GraphQL schema has been imported:

type User {
  name: String! @unique(index: "unique_username")

The database contains the following index:

{ ref: Index("unique_username"),
  ts: 1560525943310000,
  active: true,
  partitions: 1,
  name: 'unique_username',
  source: Collection("User"),
  data: { gql: { ts: Time("2019-06-14T15:25:43.226352Z") } },
  terms: [ { field: [ 'data', 'name' ] } ],
  unique: true }

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!