目录
一、概述
这次使用koa2框架来搭建一个基于node的图数据库后端服务
二、连接Neo4j数据库
目前有两种常用的npm模块可用(点击跳转到官方文档页面处)
- neo4j-driver:这个是Neo4j官方推荐库,也一直在更新,推荐
- node-neo4j :已经很久没更新了,估计已经废弃,但是相比上一个更好上手,适合搭建简单服务,推荐不熟悉JS语法的使用
三、搭建后端服务
根据以上两种方法,我分别构建了两套后端服务。
首先对两种npm模块做对比:
- neo4j-driver ,Neo4j官方库,文档也一直在更新,而ECMA标准也是每年更新一次,所以neo4j-driver在使用上也支持很多ES的新特性;同时在使用上更加灵活一些,也支持多种不同的方式,更适合复杂的场景。【推荐】
- node-neo4j已经五年没更新了,该模块通过回调函数实现数据的读取,适合处理逻辑简单的请求,使用上来说不一定是最优的选择;
以下是我自己个人的Demo,仅供参考,如果想入门的话推荐先参考官方文档的入门案例来做,我演示了多段cypher查询的例子。
多段cypher查询应用场景:比如在查询时根据查询关键字查询到对应企业,再根据第一个查询的结果找出与查询企业相关联的其他实体作为返回结果
1. 安装所需npm模块
安装以下两个neo4j数据库连接模块的其中一个,以及koa框架所需依赖和中间件(路由、json解析、跨域、日志等)
npm install node-neo4j
npm install neo4j-driver
npm install koa koa-bodyparser koa-json koa-router koa2-cors koa-logger koa-onerror
如果不想自己一步步搭建,可以使用koa脚手架——koa-generator来快速搭建服务
cnpm install -g koa-generator
全局安装脚手架工具后,输入命令创建koa项目:
koa2 // 在当前文件夹创建项目
koa2 项目名称 // 在当前路径创建对应名称的项目文件夹
2. node-neo4j连接Neo4j
node-neo4j.js内容,在koa2的index.js中作为模块导入
// node-neo4j.js
var neo4j = require('node-neo4j');
db = new neo4j('http://用户名:密码@localhost:7474');
const getJson = async (query) => {
return new Promise((resolve, reject) => {
// 根查询语句,查询对应企业
let cql_root = `MATCH (n:Enterprise)
where n.name=~'.*${
query}.*'RETURN n LIMIT 1`
const json = {
}
// 根查询语句查询到的节点信息
db.cypherQuery(cql_root, function (err, result) {
if (err){
throw err;
}
json.root = result.data[0];
let cql_name = json.root.name // 拿到第一个查询的结果
// 自己的查询语句放在这里,根据结果自行拓展你想查询的东西
let cql_child = `MATCH p=(n1:Enterprise{name: '${
cql_name}