
Product
Announcing Socket Fix 2.0
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
neo4j-graphql-js
Advanced tools
⚠️ NOTE: This project is no longer actively maintained. Please consider using the official Neo4j GraphQL Library.
A GraphQL to Cypher query execution layer for Neo4j and JavaScript GraphQL implementations.
neo4j-graphql.js is facilitated by Neo4j Labs.
Install
npm install --save neo4j-graphql-js
Start with GraphQL type definitions:
const typeDefs = `
type Movie {
title: String
year: Int
imdbRating: Float
genres: [Genre] @relation(name: "IN_GENRE", direction: "OUT")
}
type Genre {
name: String
movies: [Movie] @relation(name: "IN_GENRE", direction: "IN")
}
`;
Create an executable schema with auto-generated resolvers for Query and Mutation types, ordering, pagination, and support for computed fields defined using the @cypher
GraphQL schema directive:
import { makeAugmentedSchema } from 'neo4j-graphql-js';
const schema = makeAugmentedSchema({ typeDefs });
Create a neo4j-javascript-driver instance:
import { v1 as neo4j } from 'neo4j-driver';
const driver = neo4j.driver(
'bolt://localhost:7687',
neo4j.auth.basic('neo4j', 'letmein')
);
Use your favorite JavaScript GraphQL server implementation to serve your GraphQL schema, injecting the Neo4j driver instance into the context so your data can be resolved in Neo4j:
import { ApolloServer } from 'apollo-server';
const server = new ApolloServer({ schema, context: { driver } });
server.listen(3003, '0.0.0.0').then(({ url }) => {
console.log(`GraphQL API ready at ${url}`);
});
If you don't want auto-generated resolvers, you can also call neo4jgraphql()
in your GraphQL resolver. Your GraphQL query will be translated to Cypher and the query passed to Neo4j.
import { neo4jgraphql } from 'neo4j-graphql-js';
const resolvers = {
Query: {
Movie(object, params, ctx, resolveInfo) {
return neo4jgraphql(object, params, ctx, resolveInfo);
}
}
};
neo4j-graphql.js
A package to make it easier to use GraphQL and Neo4j together. neo4j-graphql.js
translates GraphQL queries to a single Cypher query, eliminating the need to write queries in GraphQL resolvers and for batching queries. It also exposes the Cypher query language through GraphQL via the @cypher
schema directive.
graphql-tools
, graphql-js
, and apollo-server
@cypher
directiveSee our detailed contribution guidelines.
See /examples
Full docs can be found in docs/
You can log out the generated cypher statements with an environment variable:
DEBUG=neo4j-graphql-js node yourcode.js
This helps to debug and optimize your database statements. E.g. visit your Neo4J browser console at http://localhost:7474/browser/ and paste the following:
:params :params { offset: 0, first: 12, filter: {}, cypherParams: { currentUserId: '42' } }
and now profile the generated query:
EXPLAIN MATCH (`post`:`Post`) WITH `post` ORDER BY post.createdAt DESC RETURN `post` { .id , .title } AS `post`
You can learn more by typing:
:help EXPLAIN
:help params
FAQs
A GraphQL to Cypher query execution layer for Neo4j.
We found that neo4j-graphql-js demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.