Uses the APOC extension to keep Neo4j property constraints in sync with @unique fields.

In order to support the use of a @unique field directive, neo4jAssertConstraints can be used to send a Cypher query to your Neo4j instance that executes the apoc.schema.assert procedure. For each type with a @model directive, constraints are created and kept for any fields on that type with a @unique directive, in addition to all generated id fields.

API Reference

  • typeDefs (required): Your GraphQL type definitions in SDL format.

  • driver(required): Your Neo4j driver instance (More info here).

  • log (default: false): Logs result from operation.


The following would result in the creation of an index and constraint on the name property of Technology nodes in your Neo4j instance.

import { neo4jAssertConstraints } from 'neo4j-graphql-binding';
const driver = neo4j.driver(
process.env.NEO4J_URI || "bolt://localhost:7687",
process.env.NEO4J_USER || "neo4j",
process.env.NEO4J_PASSWORD || "neo4j"
const typeDefs = /* GraphQL */`
type Technology @model {
name: String! @unique
typeDefs: typeDefs,
driver: driver,
log: true