这是一个全套的傻瓜式教程,把可能出现问题的地方进行了汇总,日常项目习惯了nodejs,(也许java和python会很方便),加上nodejs的教程少,做一个分享帮助大家一次教程,快乐连通。
毕设内容里有一个图谱相关的内容,之前一直用静态的json文件,想着加个数据库能够实现动态交互,选择了图数据库neo4j,作为一个踩啥啥有坑的bug挖掘机,搜了好多教程才顺利开启服务器访问数据库,分享一下配置经验,以及,你可能遇见的问题,我基本遇了个遍......
部署Neo4j数据库
这里主要参考了w3c提供的教程 www.w3cschool.cn/neo4j/neo4j…
坑点1 neo4j版本选择——建议使用zip安装
按照w3c的教程快乐前往neo4j官网,页面长得和w3c截图不太一样。可以选择桌面版或者压缩包安装

当我下载桌面版一步步安装之后就可以打开桌面图标使用,预览效果都很好,但是!我桌面版没法从浏览器输入localhost或者127访问,总让我输入用户名和密码,在默认都是neo4j的前提下,登录一次会提示修改密码的,但是没有找到什么好的解决办法,所以这里我还是推荐搞zip一步步配置
坑点2 neo4j安装时来自java的威胁
使用zip安装时需要注意java环境的配置,这里注意jdk版本,我之前的版本太低结果无法顺利启动服务器
- 先讲一下zip版本的安装
还是在neo4j官网,进入下载页面之后,抬头看,选适合自己的链接(我选的windows)

然后配置环境变量
新建环境变量 NEO4J_HOME,设置值为:解压的文件夹,要到neo4j-community-4.0.5才行,有window的还是外级
已有的环境变量 PATH,新加一条,具体到neo4j-community-2.1.3 \ bin
win+R cmd打开命令命令提示符,键入
neo4j.bat console.log
按回车运行 如果没有事啥报错,目前就是安全的,如果有报错,那大概率它说需要xx版本的jdk,执行卸载重装(如果会更新也可以直接更新)操作,我的提示安装11,去oracle重新下载一遍,执行java配置系列操作,就ok了,再次执行上述命令行操作,会有令人欣喜的结果。
- 前往浏览器进行首次登录改密码的操作
localhost:7474或者127.0.0.1:7474都可以,开启的界面需要输入初始用户名和密码,都是neo4j,之后会让用户改一次密码,改好记住就行了。可以输几个语句生成节点和关系,后面测试用也方便。

创建lilei节点
CREATE (embiid: PERSON {name: 'lilei'})
匹配lilei节点,具备关系“喜欢”,连接到(创建一个)hanmeimei节点
MATCH (embiid:PERSON{name:'lilei'})
MERGE (embiid)-[:LIKES{since:'1990'}]->(hanmeimei: PERSON{name:'hanmeimei'})
可视化效果如下:

目前部署工作就都完成了
使用express框架快速创建服务器,连接neo4j数据库
这里我使用的是neo4j-driver这个中间件
坑点3 服务器连数据库没啥反应
在首次尝试连接数据库时,我参考皮蛋菌的《nodejs + neo4j + d3js 集群图的实现》的教程 zhuanlan.zhihu.com/p/23618934 但是我请求数据库时总是返回一个null,目前还不清楚为啥,可能我脸太黑,总遇到奇奇怪怪的问题,但大佬讲的着实好,大家可以参考,教程更新了koa版,我不太熟就先express了
neo4j-driver的使用参考了Traversy Medi a的 Node.js With Neo4j - Freestyle Coding [2],视频教程
这里大家可以按习惯用express快速创建一个服务器,引入neo4j-driver即可,代码贴在下面供参考
//app.js
var express=require('express');
var path=require('path');
var logger=require('morgan');
var bodyParser=require('body-parser');
var neo4j=require("neo4j-driver");
var app=express();
app.set('views',path.join(__dirname,'views'));
app.set('view engine','ejs');
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}));
app.use(express.static(path.join(__dirname,"public")));
var driver=neo4j.driver('bolt://localhost',neo4j.auth.basic('neo4j','0000'));
var session=driver.session();
app.get("/",function(req,res){
session.run('MATCH(n:PERSON) RETURN n')
.then(function(result){
result.records.forEach(function(record){
console.log(record._fields[0].properties);
});
})
.catch(function(err){
console.log(err);
});
res.send('It works')
})
app.listen(3000);
console.log("Server Started on Port 3000");
module.exports=app;
使用VSCode,选择该文件,右键在终端中打开,输入node app,按回车 浏览器访问端口3000 可以在控制台看到我们请求的PERSON节点就返回来了
第一次记录教程,也有很多不足之处,之后整个过程可能还有很多问题,我也还在一点一点学习,之后也会不断更新,大家一起少踩坑