новый Neo4jGraphQL({ typeDefs, драйвер }) вызывает ошибку неизвестной директивы

#neo4j #graphql #grandstack

Вопрос:

Я пытаюсь создать новое приложение GRANDstack. База данных уже существует, поэтому я использовал «infer-schema.js» скрипт для создания схемы gql. Когда я запускаю сервер api, я получаю следующую ошибку:

 Error: Unknown directive "@relation".
13:42:38 api | Unknown directive "@relation".
 

Это в новом проекте GRANDstack — со следующими нетронутыми index.js:

 const driver = neo4j.driver(
  process.env.NEO4J_URI || 'bolt://localhost:7687',
  neo4j.auth.basic(
    process.env.NEO4J_USER || 'neo4j',
    process.env.NEO4J_PASSWORD || 'neo4j'
  )
)

/*
 * Create an executable GraphQL schema object from GraphQL type definitions
 * including autogenerated queries and mutations.
 * Read more in the docs:
 * https://neo4j.com/docs/graphql-manual/current/
 */

const neoSchema = new Neo4jGraphQL({ typeDefs, driver })
 

Со схемой:

 type Incredient {
   _id: ID!
   name: String!
   recipes: [Recipe] @relation(name: "HAS", direction: IN)
}

type Product {
   _id: ID!
   name: String!
   has_offer: [Offer] @relation(name: "HAS_OFFER", direction: OUT)
   HAS_OFFER_rel: [HAS_OFFER]
   has_quantity: [Quantity] @relation(name: "HAS_QUANTITY", direction: OUT)
   HAS_QUANTITY_rel: [HAS_QUANTITY]
}

type Offer {
   _id: ID!
   newPrice: Float!
   normalPrice: Float!
   products: [Product] @relation(name: "HAS_OFFER", direction: IN)
}

type Quantity {
   _id: ID!
   name: String!
   products: [Product] @relation(name: "HAS_QUANTITY", direction: IN)
}

type Recipe {
   _id: ID!
   name: String!
   has: [Incredient] @relation(name: "HAS", direction: OUT)
   HAS_rel: [HAS]
}

type HAS @relation(name: "HAS") {
  from: Recipe!
  to: Incredient!
  amount: Float!
  unit: String!
}

type HAS_OFFER @relation(name: "HAS_OFFER") {
  from: Product!
  to: Offer!
  discount: Float!
}

type HAS_QUANTITY @relation(name: "HAS_QUANTITY") {
  from: Product!
  to: Quantity!
  quantity: Float!
}
 

Ответ №1:

Вы не можете использовать схему вывода для @neo4j/graphql (официальная библиотека Neo4j GraphQL), и она должна использоваться только с устаревшими neo4j-graphql-js . Вы пытаетесь ввести neo4j-graphql-js совместимую схему @neo4j/graphql . Вы должны изменить @relation @relationship свойства отношений и для них, пожалуйста, обратитесь к этому.

Комментарии:

1. Спасибо. Я только что закончил книгу GRANDstack, и мне немного грустно, что она уже устарела.

2. Извините за это, но есть планы обновить книгу.