前言
随着图数据库的发展,越来越多的前端开发者意识到了图数据库在前端应用中的广泛应用,而 neo4j 作为当前最流行的图数据库之一,在前端领域的应用也逐渐得到了认可。
在前端应用中,graphql 作为一种查询语言和服务端通信协议,可以与 neo4j 搭配使用,实现前端与图数据库的无缝连接。而 npm 包 neo4j-graphql-server
提供了一种易用的方式来创建 graphql API,下面将详细介绍该 npm 包的使用方法。
安装与配置
在使用 neo4j-graphql-server
之前,需要先安装 neo4j 数据库和对应的 neo4j-graphql-js
库。首先,在命令行中安装 neo4j:
brew install neo4j
然后在你的项目目录中安装 neo4j-graphql-js
属于 neo4j-graphql-server
的依赖项:
npm install neo4j-graphql-js
接下来,在项目根目录中创建 schema.graphql
文件用于定义 graphql 查询模式:
-- -------------------- ---- ------- ---- ------ - --- --- ----- ------ ---- --- -------- -------- --------------- --------------- ---------- ---- -------------- ------- --------------- ----------- ---------- ---- - ---- ----- - --- --- ------ ------ ----- --- ------- -------- --------------- ----------- ---------- --- -
其中 @relation
标注用于定义关系名称和方向。
最后在项目根目录中创建 server.js
文件用于启动 graphql 服务器:
-- -------------------- ---- ------- ----- - ------------- --- - - ------------------------ ----- - ------------------- - - --------------------------- ----- ----- - ----------------------- ----- ------ - ------------------------------------- ------------------------- ------------ ----- -------- - ---- - -- ------- ---- - ----- ------ - --------------------- -------- -- ----- ------ - --- -------------- ------- -------- - ------ - -- ----------------------- --- -- -- - --------------- ------ ----- -- -------- --
其中 makeAugmentedSchema
用于创建增强的 schema,context: { driver }
用于传递数据库驱动器。
现在,可以启动 graphql 服务器并访问 localhost:4000 来查看 graphql playground。
查询
下面将使用 neo4j-graphql-server
执行一些常见的 graphql 操作。
Node 推荐算法
Neo4j 提供了用于查询重要性指标的 Node 推荐算法。下面的查询将从 Person
节点中返回推荐的前 3 个朋友:
query { recommended_friends(personName: "Alice", limit: 3) { name } }
在线查找
下面的查询将从 Movie
节点中返回与“Pulp Fiction”相似的在线电影:
query { most_popular_movies_similar_to_online_movie(movieTitle: "Pulp Fiction") { title } }
热门搜索
下面的查询将从所有 Movie
节点中返回最受欢迎的电影:
query { most_popular_movies { title } }
结论
通过 neo4j-graphql-server
,前端开发者可以方便地查询图数据库,并使用从 neo4j 提供的算法和分析中获得的信息来操纵数据。同时,在这些任务中,graphql 和 neo4j-graphql-js
作为查询语言和服务端库提供了非常好的支持,使用起来非常易用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60065f8b238a385564ab6e45