我在 Heroku 上使用 Neo4j 数据库作为graphenedb使用Ember.js框架进行连接。该应用程序通过Node.js在本地运行(不通过Heroku服务器运行)。
调用driver.session();我收到此错误:
WebSocket连接到' ws://hobby-blablabla.dbs.graphenedb.com:24786 /'失败:WebSocket握手期间出错:net :: ERR_CONNECTION_RESET
我使用ember-browserify导入驱动程序:
import Neo4j from 'npm:neo4j-driver';
我打电话给代码:
var neo4j = Neo4j.v1;
var driver = neo4j.driver(graphenedbURL, neo4j.auth.basic(graphenedbUser, graphenedbPass));
var session = driver.session(); // error it thrown here
我使用Heroku CLI的终端命令检索了连接信息,如: heroku config:get GRAPHENEDB_BOLT_URL
有可能Heroku实际上不允许我从本地计算机连接到数据库。但解决这个问题并能够连接真的很好。谢谢你的帮助。
答案 0 :(得分:1)
我是GrapheneDB的Judit。如果我理解你,那么你在Ember.js应用程序中加载Neo4j javascript driver,驱动程序正试图通过WebSocket连接到GrapheneDB数据库。不幸的是,这是我们不支持的。
我们始终建议在堆栈中添加一个后端,该后端处理与GrapheneDB的连接,并避免从浏览器中执行此操作,并防止将您的凭据暴露给使用您的应用的任何人。您可以使用您现在使用的相同驱动程序(npm install neo4j-driver
)构建Node.js服务器并管理驱动程序连接。
顺便说一句,您应该能够使用Heroku环境变量的值从本地计算机连接到您的数据库。您可以通过运行轻松检查:
GDB_URL=`heroku config:get GRAPHENEDB_URL`
curl -v $GDB_URL
答案 1 :(得分:0)
我相信你需要设置CROSS设置。不确定如何在Node中这样做,但以下是我设置Rails应用程序的方法,
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*', headers: :any, methods: [
:get, :post, :put, :patch, :delete, :options, :head
]
end
end