我在一个EC2实例上设置了一个Neo4j数据库。我附加了一个域名并创建了一个证书,以便可以从https://my-domain-name:7473访问浏览器版本。在浏览器中,我可以创建节点并修改数据库。
现在,我希望能够从Node修改此数据库,但它不起作用。这就是我所拥有的:
const neo4j = require('neo4j-driver');
const driver = neo4j.driver('bolt://my-domain-name', neo4j.auth.basic('neo4j', 'instance-id-password'));
const session = driver.session();
session
.run(`MATCH (n:User) RETURN n`)
.then(function (result) {
result.records.forEach(function (record) {
console.log(record._fields[0].properties);
});
})
.catch(function (err) {
console.log('ERROR WITH NEO4J CALL');
console.log(err);
});我得到的错误是
ERROR WITH NEO4J CALL
{ Neo4jError: Connection was closed by server
at captureStacktrace (C:\Users\admin\Documents\TestingAWSServerlessExtension\test-node-neo4j\node_modules\neo4j-driver\lib\result.js:263:15)
at new Result (C:\Users\admin\Documents\TestingAWSServerlessExtension\test-node-neo4j\node_modules\neo4j-driver\lib\result.js:68:19)
at Session._run (C:\Users\admin\Documents\TestingAWSServerlessExtension\test-node-neo4j\node_modules\neo4j-driver\lib\session.js:172:14)
at Session.run (C:\Users\admin\Documents\TestingAWSServerlessExtension\test-node-neo4j\node_modules\neo4j-driver\lib\session.js:135:19)
at Object.<anonymous> (C:\Users\admin\Documents\TestingAWSServerlessExtension\test-node-neo4j\index.js:7:6)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3) code: 'ServiceUnavailable', name: 'Neo4jError' }我知道cypher查询是有效的,因为当我运行同样的代码将my-domain-name替换为localhost时,我得到了预期的输出。所以我不能访问我的Neo4j数据库,除非我在本地托管它。有什么想法吗?
发布于 2020-01-08 05:01:45
我最终将bolt.tls_level更改为OPTIONAL,并且我能够连接到我的数据库。这可能意味着我的Javascript代码没有创建到我的数据库的加密连接,这是我应该研究的东西。
发布于 2020-01-04 11:03:24
看起来有什么东西切断了连接,这可能是证书安全问题(如果证书不能识别/服务于螺栓驱动程序)或网络问题(EC2上的一些设置)。
是否将bolt.ssl_policy的配置设置设置为与https.ssl_policy相同的策略?如果不是,则进行更改并重新启动图形,这样可能会起作用。
您是否在与图形相同的服务器上运行node?如果bolt地址是0.0.0.0,您可以尝试使用'bolt://localhost‘而不是my domain来跳过一些(潜在的)网络问题。
https://stackoverflow.com/questions/59505998
复制相似问题