我想用graphql(Grandstack)输入neo4j(社区版)图。我希望能够将关系设置为不可为空,这有可能吗?
所以我想使用neo4j-graphql-js在neo4j的图形上构建某种类型的系统。它提供了一种通过@relation指令在graphql中的neo4j中描述关系的方法。因此,现在我想创建一个类型One(在neo4j中用标签:: One表示)和类型2(在neo4j中用:Two表示)。类型2具有一个不可为空的字段概率:Float和一个关系字段myOne:一个也应为不可为空的字段。因此,在创建类型为2的实例时,我希望有人询问prob和myOne。作为回报,当我查询2时,如果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。创建以及查询均按预期工作。当查询类型2时,在生成的游乐场文档中看到myOne不再是nun-nullable。使用自动生成的GreateTwo创建2时,不再需要myOne字段。
我实际上还不知道如何在不使用直接Cypher语句而是使用@relation指令的情况下自己实现这一点。如果不需要,我实际上也会发现它很有用,因为否则我不会真正看到这些@relationship指令的实际使用。