Как сделать определения отношений в neo4j-graphql-js ненулевыми? - PullRequest
0 голосов
/ 25 июня 2019

Я хочу напечатать свой neo4j (Community Edition) -graph с graphql (Grandstack).Я хочу иметь возможность устанавливать отношения без значений NULL, это возможно?

Так что я хочу построить некую систему типов на моем графике в neo4j, используя neo4j-graphql-js.Он предоставляет способ описания отношений в neo4j в graphql с помощью директивы @relation.Итак, теперь я хочу создать тип One (представленный в neo4j с меткой:: One) и тип Two (представьте в neo4j с: Two).Тип два имеет необнуляемое поле prob: Float и поле отношений myOne: поле, которое также должно быть ненулевым.Поэтому при создании экземпляра типа Two я ожидаю, что меня спросят о prob и myOne.В свою очередь, я также хочу, чтобы при запросе Two, если либо prob, либо myOne равно null, возвращалась ошибка.

Как мне этого добиться?

Итак, мой наивный подход был таким:

const {makeAugmentSchema} = require('neo4j-graphql-js');
const {ApolloServer} = require('apollo-server');
const driver = require('./database');

const typeDefs = `

type One {
  id: ID!
}

type Two {
  id: ID!
  prob: Float!
  myOne(first: Int = 1, offset: Int = 0) One! @relation(name: "ARROW", direction:"IN")

`
const schema = makeAugmentedSchema({
  typeDefs,
  config: {
    query: true,
    mutation: true,
  }
});

server = new ApolloServer({ schema, context: { driver }});
...

Так что тип One Создание, а также запросы работают нормально, как и ожидалось.При запросе типа Two в сгенерированной документации игровой площадки видно, что myOne больше не может быть nul-nullable.При создании Two с автоматически сгенерированным GreateTwo поле myOne больше не является обязательным.

У меня фактически нет пока идеи, как реализовать это самостоятельно, не используя прямые операторы Cypher, а вместо этого используя директивы @relation.Я также на самом деле нашел бы это полезным, если бы мне не нужно было об этом знать, потому что иначе я не вижу практического использования этих директив @relationship.

...