提问者:小点点

Neo4j GraphQL GraphQL.idl未生成接口


我正在测试Neo4j GraphQL插件。我有一个IDL模式,我将其传递给neo4j:

CALL graphql.idl(
'type Address {
  id: ID!
  display_name: String
  adress_spec: AddrSpec!
  adress_from: Originator! @relation(name: "From")
  adress_sender: Originator @relation(name: "Sender")
  adress_reply_to: Originator @relation(name: "ReplyTo")
  destination_to: [Destination] @relation(name: "To")
  destination_cc: [Destination] @relation(name: "Cc")
  destination_bcc: [Destination] @relation(name: "Bcc")
}

type Originator {
  id: ID!
  origin_date: Datetime!
  originator_role: originator_role!
  message: [Message!] @relation(name: "Originator")
  address_from: Address! @relation(name: "From")
  address_sender: Address @relation(name: "Sender")
  address_reply_to: Address @relation(name: "ReplyTo")
}

type Destination {
  id: ID!
  destination_role: destination_role!
  received_date: Datetime!
  message: Message! @relation(name: "Destination")
  address_to: [Address]! @relation(name: "To")
  address_cc: [Address] @relation(name: "Cc")
  address_bcc: [Address] @relation(name: "Bcc")
}

type Message {
  id: ID!
  subject: String
  comments: String
  originator: Originator! @relation(name: "Originator")
  destinations: [Destination]! @relation(name: "HasDestination")
  referencing: [Message] @relation(name: "Referencing")
  in_reply_to: [Message] @relation(name: "InReplyTo")
  keywords: [Keyword] @relation(name: "Tags")
}

type Keyword {
  id: ID!
  keyword: String!
  messages: [Message] @relation(name: "Tags")
}
');

我得到了一个接口描述:

"{Address=MetaData{type='Address', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), display_name=PropertyInfo(fieldName=display_name, type=String, id=false, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={adress_spec=RelationshipInfo(fieldName=adress_spec, type=adress_spec, label=AddrSpec, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), adress_from=RelationshipInfo(fieldName=adress_from, type=From, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), adress_sender=RelationshipInfo(fieldName=adress_sender, type=Sender, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0), adress_reply_to=RelationshipInfo(fieldName=adress_reply_to, type=ReplyTo, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0), destination_to=RelationshipInfo(fieldName=destination_to, type=To, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), destination_cc=RelationshipInfo(fieldName=destination_cc, type=Cc, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), destination_bcc=RelationshipInfo(fieldName=destination_bcc, type=Bcc, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Originator=MetaData{type='Originator', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={origin_date=RelationshipInfo(fieldName=origin_date, type=origin_date, label=Datetime, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), originator_role=RelationshipInfo(fieldName=originator_role, type=originator_role, label=originator_role, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), message=RelationshipInfo(fieldName=message, type=Originator, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=1), address_from=RelationshipInfo(fieldName=address_from, type=From, label=Address, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), address_sender=RelationshipInfo(fieldName=address_sender, type=Sender, label=Address, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0), address_reply_to=RelationshipInfo(fieldName=address_reply_to, type=ReplyTo, label=Address, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Destination=MetaData{type='Destination', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={destination_role=RelationshipInfo(fieldName=destination_role, type=destination_role, label=destination_role, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), received_date=RelationshipInfo(fieldName=received_date, type=received_date, label=Datetime, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), message=RelationshipInfo(fieldName=message, type=Destination, label=Message, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), address_to=RelationshipInfo(fieldName=address_to, type=To, label=Address, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=1), address_cc=RelationshipInfo(fieldName=address_cc, type=Cc, label=Address, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), address_bcc=RelationshipInfo(fieldName=address_bcc, type=Bcc, label=Address, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Message=MetaData{type='Message', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), subject=PropertyInfo(fieldName=subject, type=String, id=false, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), comments=PropertyInfo(fieldName=comments, type=String, id=false, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={originator=RelationshipInfo(fieldName=originator, type=Originator, label=Originator, out=true, multi=false, cypher=null, parameters=null, description=null, nonNull=1), destinations=RelationshipInfo(fieldName=destinations, type=HasDestination, label=Destination, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=1), referencing=RelationshipInfo(fieldName=referencing, type=Referencing, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), in_reply_to=RelationshipInfo(fieldName=in_reply_to, type=InReplyTo, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0), keywords=RelationshipInfo(fieldName=keywords, type=Tags, label=Keyword, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}, Keyword=MetaData{type='Keyword', properties={id=PropertyInfo(fieldName=id, type=ID!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null), keyword=PropertyInfo(fieldName=keyword, type=String!, id=true, indexed=false, cypher=null, defaultValue=null, unique=false, enum=false, parameters=null, description=null)}, labels=[], relationships={messages=RelationshipInfo(fieldName=messages, type=Tags, label=Message, out=true, multi=true, cypher=null, parameters=null, description=null, nonNull=0)}, isInterface=false}}"

但是,在GraphiQL中没有模式描述,并且在Neo4j中,当我询问:

call graphql.schema()

结果:

neo.clienterror.procedure.procedureCallFailed:无法调用过程Graphql.Schema:原因:Kotlin.KotlinNullPointerException

有什么建议吗?

/托马斯

以下是日志的摘录:

2018-04-24 18:58:01.395+0000警告/graphql/kotlin.kotlinnullpointerException(位于org.neo4j.graphql.graphqlschemabuilder.newReferenceField(位于org.neo4j.graphql.graphqlschemabuilder.kt:262)(位于org.neo4j.graphqlschemabuilder.addRelationships(位于org.neo4j.graphql.graphqlschemabuilder.228)(位于或impl.invoke(DelegatingMethodAccessorimpl.java:43)在java.lang.reflect.method.invoke(method.java:498)在com.sun.jersey.spi.container.javamethodInvokerFactory$1。invoke(javamethodInvokerFactory.60)在com.sun.jersey.server.impl.model.methodDispatch.abstractResourceMethodDispatchProvidercom.sun.jersey.server.impl.application.webapplicationimpl._handleRequest(webapplicationimpl.java:1542)在com.sun.jersey.server.implication.webapplicationimpl._handleRequest(webapplicationimpl.java:1473)在com.sun.jersey.server.implication.webapplicationimpl.handleRequest(webapplicationimpl.java:1419)在com.sun.jersey.spi.container.servlet.webapplicationimpl.handleRequest(ledfilter.java:123)位于org.eclipse.jetty.servlet.servlethandler$cachedchain.dofilter(servlethandler.java:1652)位于org.neo4j.server.rest.web.collectuseragentfilter.dofilter(collectuseragentfilter.java:69)位于org.eclipse.jetty.servlet.servlethandler$cachedchain.dofilter(servlethandler.java:1652)位于ndle(handlerwrapper.java:97)在org.eclipse.jetty.Server.Server.Server.handle(Server.java:499)在org.eclipse.jetty.Server.httpchannel.handle(httpchannel.java:311)在org.eclipse.jetty.Server.httpconnection.onfillable(httpconnection.java:258)在org.eclipse.jetty.io.abstractConnection$2。run(abstractconnection.java:544)在2018-04-24 19:11:54.871+0000信息停止。


共1个答案

匿名用户

这对我有用:

我变了

  • 日期时间到字符串
  • 字符串的*_角色
  • 地址规范到字符串
  • 添加方向

然后

CALL graphql.idl(
'type Address {
  id: ID!
  display_name: String
  adress_spec: String!
  adress_from: Originator! @relation(name: "From")
  adress_sender: Originator @relation(name: "Sender")
  adress_reply_to: Originator @relation(name: "ReplyTo")
  destination_to: [Destination] @relation(name: "To")
  destination_cc: [Destination] @relation(name: "Cc")
  destination_bcc: [Destination] @relation(name: "Bcc")
}

type Originator {
  id: ID!
  origin_date: String!
  originator_role: String!
  message: [Message!] @relation(name: "Originator", direction:"IN")
  address_from: Address! @relation(name: "From", direction:"IN")
  address_sender: Address @relation(name: "Sender", direction:"IN")
  address_reply_to: Address @relation(name: "ReplyTo", direction:"IN")
}

type Destination {
  id: ID!
  destination_role: String!
  received_date: String!
  message: Message! @relation(name: "Destination", direction:"IN")
  address_to: [Address]! @relation(name: "To", direction:"IN")
  address_cc: [Address] @relation(name: "Cc", direction:"IN")
  address_bcc: [Address] @relation(name: "Bcc", direction:"IN")
}

type Message {
  id: ID!
  subject: String
  comments: String
  originator: Originator! @relation(name: "Originator")
  destinations: [Destination]! @relation(name: "HasDestination")
  referencing: [Message] @relation(name: "Referencing")
  in_reply_to: [Message] @relation(name: "InReplyTo")
  keywords: [Keyword] @relation(name: "Tags")
}

type Keyword {
  id: ID!
  keyword: String!
  messages: [Message] @relation(name: "Tags", direction:"IN")
}
');