Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GraphiQL返回';空';询问_Javascript_Neo4j_Graphql_Graphql Js_Graphiql - Fatal编程技术网

Javascript GraphiQL返回';空';询问

Javascript GraphiQL返回';空';询问,javascript,neo4j,graphql,graphql-js,graphiql,Javascript,Neo4j,Graphql,Graphql Js,Graphiql,实际上,我正在使用Neo4j数据库和Neo4j_movie_推荐代码中的一个示例来试验GraphQL和GraphiQL。我有一个非常奇怪的问题,它似乎与javascript或GraphQL有关。我做了一个简单的查询,但是我可以看到数据可以由解析器返回(使用console.log)GraphQL返回一个“null”值。以下是代码段: const resolveFunctions = { Query: { allVoters(_, params) {

实际上,我正在使用Neo4j数据库和Neo4j_movie_推荐代码中的一个示例来试验GraphQL和GraphiQL。我有一个非常奇怪的问题,它似乎与javascript或GraphQL有关。我做了一个简单的查询,但是我可以看到数据可以由解析器返回(使用console.log)GraphQL返回一个“null”值。以下是代码段:

const resolveFunctions = {
    Query: {
        allVoters(_, params) {
            let session = driver.session();
            let query = "MATCH (voter:Voter) RETURN voter;"
            return session.run(query, params)
                .then(result => {
                    return result.records.map(record => {
                        console.log("Voter: " + JSON.stringify(record))
                        return record.get("voter").properties
                    })
                })
        },

    },
    Voter: {
        memberOf(voter) {
            let session = driver.session(),
                params = { voterid: voter.voterid },
                query = `
                        MATCH (v:Voter)-[:MEMBER_OF]->(g:Group)
                        WHERE v.voterid = $voterid
                        RETURN g.name AS groupname;
                        `
            return session
                .run(query, params)
                .then(result => {
                    return result.records.map(record => {
                        console.log("Group Name " + record.get("groupname")) 
                        return record.get("groupname")
                    })
                })
        },
console.log显示正确的值,但GraphiQL显示名称,email..正确,但memberof字段显示为“null”。有人能看出我做错了什么吗

这是模式

export default `
type Voter {
  voterid     : String!
  email       : String!
  name        : String!
  nickname    : [String]
  address     : String
  altAddress  : String
  dob         : String
  profession  : String
  telephone   : String
  gender      : String
  skills      : [String]
  votesIn     : PD
  livesIn     : PD 
  memberOf    : [Group]
}
type Group {
  name        : String
  location    : String
  created     : String
  partof      : Division
}
type PD {
  number      : String
  location    : String
  created     : String
  description : String
  partof      : Division 
}
type Division {
  name        : String
  created     : String
  belongsto   : Constituency
 }
 type Constituency {
  name        : String
  created     : String
  reportsto   : Region
 }
 type Region {
  name        : String
  created     : String
  reportsto   : Exec
 }
 type Exec {
  name        : String
  created     : String
 }

type Query {
  allVoters: [Voter]!
  getVoter(voterid: String!): Voter
  }

  schema {
    query: Query
  }
`;
编辑…添加冲突解决程序 getvoter的解析程序代码:

  getVoter(_, params) {
            let session = driver.session();
            let query = "MATCH (voter:Voter {voterid: $voterid}) RETURN voter;"
            return session.run(query, params)
                .then(result => {
                    return result.records.map(record => {
                        return record.get("voter").properties
                    })
                })
        },

解析程序返回的内容必须是模式定义的正确类型。如果返回错误的类型(一个数字而不是字符串),GraphQL可能会尝试将其强制为正确的类型,但在大多数情况下,它只会返回null

您的
memberOf
字段应该是
Group
对象的数组。但是,在解析器中,您似乎返回了一个字符串数组:

return result.records.map(record => {
  return record.get("groupname")
})

您需要使用
toObject
方法,或者将记录转换为一个对象,该对象的字段与
的模式中指定的字段相匹配。解析程序返回的任何内容都必须是模式定义的正确类型。如果返回错误的类型(一个数字而不是字符串),GraphQL可能会尝试将其强制为正确的类型,但在大多数情况下,它只会返回null

您的
memberOf
字段应该是
Group
对象的数组。但是,在解析器中,您似乎返回了一个字符串数组:

return result.records.map(record => {
  return record.get("groupname")
})

您需要使用
toObject
方法,或者将记录转换为一个对象,该对象的字段与
Group

模式中指定的字段相匹配……是的,Daniel组实际上是一个对象数组,但我只需要返回obj.name。我试图只返回名称,但显然我必须返回对象,graphql发送graphiql所请求的内容……谢谢提醒。我有一个关于graphql返回“null”问题的后续问题。我注意到,除非我将返回类型设置为对象数组,否则我会得到“null”。如果类型可以是数组,则这可能不是问题,但存在结果不能是数组的查询,例如getVoter by voterid(其中voterid是唯一的)。如果我在查询中不使用对象数组作为返回类型,我将得到一个“null”值。i、 getVoter(voterid:String!):当getVoter(voterid:String!):[Voter]工作时,Voter会给出null。你能解释一下吗?我不能不看代码就确定,但听起来你的getVoter解析程序正在返回数组。同样,解析程序返回的类型和模式中为该字段指定的类型需要匹配。您不能将
User
作为模式中的返回类型,并在解析器中返回对象数组;您不能将
[User]
作为模式中的返回类型,并在解析器中返回一个对象(而不是一个对象数组)。@Daniel……我明白了……我不明白……返回和数组或对象有什么区别。graphql似乎认为两者是一样的。我希望结果中只有一个对象,这就是我在这里看到的:……或者使用类似
first()
method的方法……是的,Daniel组实际上是一个对象数组,但我只需要返回obj.name。我试图只返回名称,但显然我必须返回对象,graphql发送graphiql所请求的内容……谢谢提醒。我有一个关于graphql返回“null”问题的后续问题。我注意到,除非我将返回类型设置为对象数组,否则我会得到“null”。如果类型可以是数组,则这可能不是问题,但存在结果不能是数组的查询,例如getVoter by voterid(其中voterid是唯一的)。如果我在查询中不使用对象数组作为返回类型,我将得到一个“null”值。i、 getVoter(voterid:String!):当getVoter(voterid:String!):[Voter]工作时,Voter会给出null。你能解释一下吗?我不能不看代码就确定,但听起来你的getVoter解析程序正在返回数组。同样,解析程序返回的类型和模式中为该字段指定的类型需要匹配。您不能将
User
作为模式中的返回类型,并在解析器中返回对象数组;您不能将
[User]
作为模式中的返回类型,并在解析器中返回一个对象(而不是一个对象数组)。@Daniel……我明白了……我不明白……返回和数组或对象有什么区别。graphql似乎认为两者是一样的。我希望结果中只有一个对象,这就是我在这里看到的:……或者使用类似
first()
method的东西