上一篇文章开启了 GraphQL 的话题,介绍 Neo4j GraphQL plugin 的使用,让我们可以很方便用 GraphQL 存取 Neo4j 资料库。
不过官方已不再维护这个 plugin,认为将 GraphQL 的支援从资料库核心服务抽离出来,才是好的设计。
那麽取得代之的是什麽呢?neo4j-graphql-js 或是 neo4j-graphql-java,这两个专案的作用都是将 GraphQL 语法转换成 Cypher 来操作资料库,只是语言不同。
在继续说下去之前,我们先来看一个更大的东西 GRANDstack
GRANDstack 是 Neo4j 目前还在开发中的一个实验计画,其命名来自於:
很显然的,这是一个从前端到後端的完整开发环境,是一个示范 GraphQL 操作 Neo4j 资料库的完整解决方案,我们先把它安装起来吧!
安装步骤相当简单,官方也出了 GRANDstack Starter ,大致上的步骤如下:
npx create-grandstack-app mygrand
npm run start
npm run seedDb
接下来就可以另外打开 http://localhost:4001/graphql 来下达 GraphQL 的查询语法。
GRANDstack 的其他细节设定与操作,可以参考官方教学,接下来我们回过头来看看 neo4j-graphql.js
我们试着用最少的程序码来实作 GraphQL 查询电影资料库,首先开启一个新的 nodejs 专案,并安装 neo4j-graphql.js 和 Apollo server
npm init
npm install --save neo4j-graphql-js apollo-server
先简单定义我们预期的 GraphQL Schema,然後在交由 graphql js 自动产生完整的 Schema
const GraphqlJS = require('neo4j-graphql-js');
const typeDefs = `
type Movie {
title: String!
released: Int
actors: [Person] @relation(name:"ACTED_IN",direction:IN)
}
type Person {
name: String!
born: Int
movies: [Movie] @relation(name:"ACTED_IN",direction:OUT)
}
`;
const schema = GraphqlJS.makeAugmentedSchema({ typeDefs });
// console.log(schema);
初始化一个 Neo4j Driver 物件
const neo4j = require('neo4j-driver');
const driver = neo4j.driver(
'bolt://localhost:7687',
neo4j.auth.basic('neo4j', 'mypassword')
);
初始化 Apollo server 物件并监听 3003 port
const Apollo = require('apollo-server');
const server = new Apollo.ApolloServer({ schema, context: { driver } });
server.listen(3003, '0.0.0.0').then(({ url }) => {
console.log(`GraphQL API ready at ${url}`);
});
接着开启网页 http://0.0.0.0:3003/ 就可以用 GraphQL 查询电影资料库了,范例如下
以上就是 GRANDstack 的初步介绍,更细节的教学请看参考资源喔~
这是铁人赛最後一篇文章了,感谢过程中所有追踪或浏览我文章的朋友们,谢谢你们知的支持 ^^
有很多文章是在很赶的时候送出的,没有充分检查,之後我会再拨些时间回来慢慢修饰与更正,如果图形资料库有勾起你的兴趣,请还是持续订阅追踪,谢谢大家~
参考资源
https://neo4j.com/labs/grandstack-graphql/
https://grandstack.io/docs/neo4j-graphql-js/
https://github.com/neo4j-graphql/neo4j-graphql-js
学了 React 之後的下一步,还能学什麽呢? 在今年的铁人赛中,想要来分享这一两年来开始使用的 T...
前言 今天要介绍 Go 语言的另一种资料型态,在先前,我们介绍的变数都是储存单一的值或是多个相同型态...
网站涵盖了商业网点提供的一系列有益健康的设施和功能。无论是教育、新闻、博客还是电子商务商品,在线门...
目前最常被开发者使用的资料库系统为关联式资料 NoSQL: 全名为「Not only SQL」,也就...
如果要在 Linux 里面建立捷径,可使用已下语法: ln -s /usr/local/openlo...