Я хочу напечатать свой 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.