Как мне написать распознаватель при использовании сервера apollo graphql с базой данных neo4j?

Я использую neo4j dB, и я установил apollo graphql server (используя graphql-server-express). Допустим, моя схема имеет 3 типа, а именно "Страна", "Штат" и "Люди", где в одной стране может быть несколько штатов, а в одном штате может быть несколько человек.

// Пример schema.js

import { makeExecutableSchema } from 'graphql-tools';

import resolvers from './resolvers';

 const typeDefs = `
 type Country {
   id: Int! 
   name: String
   state: [State]
   people: [People]

  }

 type State {
     id: Int!
     name: String
     countryID: CountryID
     people: [People]

   }

   type People {
     id: Int!
     name: String
     SSN: String
     stateid:StateID
     countryid:CountryID
    }


    type Query {
      Countries: [Country]
      States: [State]
      Peoples: [People]

      }

    schema {
     query: Query

    }
   `;

   export default makeExecutableSchema({
      typeDefs: typeDefs,
      resolvers,
    });

Итак, как мне написать свою функцию распознавателя в файле resolver.js, чтобы он помог мне правильно получить данные из любого из вышеперечисленных типов?

Я попытался использовать следующий запрос в файле resolver.js (для запроса к базе данных Neo4j с использованием языка запросов Cypher), но получил ошибку типа, и я не могу ее исправить.

// Пример файла resolver.js.

let neo4j = require('neo4j-driver').v1;
let driver = neo4j.driver("bolt://localhost", neo4j.auth.basic("neo4j", 
  "******"));

 const resolver = {
  Query: {
     Countries(_, params) {
     let session = driver.session();
    let query = "MATCH (country:Country)  RETURN country;"
    return session.run(query, params)
      .then( result => { return result.records.map(record => { return 
      record.get("country").properties })})
    },
 },

 State:{
   state(State) {
    let session = driver.session(),
       params = {countryid: Country.id},
       query = `
        MATCH (s:State-[:PRESENT]->(c:Country)
        WHERE s.countryid = $countryid
        RETURN s;
       `
       return session.run(query, params)
         .then( result => { return result.records.map(record => { return 
     record.get("state").properties })})
      },
    },
  };

export default resolver;

0 ответов

Другие вопросы по тегам