如何使neo4j-graphql-js中的关系定义不可为空?

时间:2019-06-25 17:36:41

标签: javascript neo4j graphql-js apollo-server grandstack

我想用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指令的实际使用。

0 个答案:

没有答案