ECONNREFUSED 使用 node.js 连接到远程 Cassandra 数据库

ECONNREFUSED connecting to remote Cassandra db with node.js

我正在使用 express-cassandra 版本 0.5.4 连接到我托管的 aws cassandra 数据库。我有权访问,但无论我更改什么,我都会收到 ECONNREFUSED

这是正在连接的 express-cassandra 的片段,它是文档中的标准片段。

models.setDirectory(__dirname + '/../models').bind({ clientOptions: { contactPoints: [process.env.Cluster1Pub,process.env.Cluster2Pub,process.env.Cluster3Pub], protocolOptions: {port: 9042}, keyspace: process.env.keyspace }, ormOptions: { defaultReplicationStrategy : { class: 'NetworkTopologyStrategy', replication_factor: 3 }, dropTableOnSchemaChange: false, dontCreateKeyspace: true } },function(err) { if(err) console.log(err.message); else console.log(models.timeuuid()); });

试试这些设置

更改rpc_address:0.0.0.0 broadcast_rpc_address: 1.2.3.4

参考:"All host(s) tried for query failed" Error

如果您尝试连接到位于 docker 容器内的 Cassandra 数据库。请在使用...

创建数据库容器时公开端口
docker run -d -it -p 9042:9042 -p 9041:9041 --name <container_name> <docker_image_id>

暴露数据库端口后,您将无法使用nodejs cassandra-driver 连接数据库...

const cassandra = require('cassandra-driver');

const client = new cassandra.Client({
  contactPoints: ['h1', 'h2'],
  localDataCenter: 'datacenter1',
  keyspace: 'ks1'
});

const query = 'SELECT name, email FROM users WHERE key = ?';

client.execute(query, [ 'someone' ])
  .then(result => console.log('User with email %s', result.rows[0].email));