如何在Javascript中正确设置Cassandra客户端?

时间:2019-12-06 20:32:25

标签: javascript node.js cassandra cassandra-2.1

现在,我正在运行一个带有Cassandra的泊坞窗。我有一个位于Docker外部的javascript文件,该文件需要连接到Cassandra。我发现了一个与JS接口的节点包,名为cassandra-driver。但是,使用以下代码:

var cassandra = require('cassandra-driver');
var PlainTextAuthProvider = cassandra.auth.PlainTextAuthProvider;
const client = new cassandra.Client({
    contactPoints: ['127.0.0.1:9042'],
    localDataCenter: '127.0.0.1',
    keyspace: 'wasabi_experiments',
    authProvider: new PlainTextAuthProvider('cassandra', 'cassandra')
});

我明白了

(node:17836) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): NoHostAvailableError: All host(s) tried for query failed. First host tried, 127.0.0.1:9042: ArgumentError: localDataCenter was configured as '127.0.0.1', but only found hosts in data centers: [datacenter1]. See innerErrors.
(node:17836) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): NoHostAvailableError: All host(s) tried for query failed. First host tried, 127.0.0.1:9042: ArgumentError: localDataCenter was configured as '127.0.0.1', but only found hosts in data centers: [datacenter1]. See innerErrors.

我该如何使用它?

2 个答案:

答案 0 :(得分:2)

您的问题是您正在使用127.0.0.1作为localDataCenter参数的值,但不应将其设置为机器的地址,而应将其设置为Cassandra数据中心的名称-在您的情况下,这是datacenter1。将该参数的值更改为datacenter1,它将开始起作用。

应该是:

const { Client, auth } = require('cassandra-driver');
const client = new cassandra.Client({
    contactPoints: ['127.0.0.1:9042'],
    localDataCenter: 'datacenter1', // here is the change required
    keyspace: 'wasabi_experiments',
    authProvider: new auth.PlainTextAuthProvider('cassandra', 'cassandra')
});

client.connect();

P.S。我建议您同时阅读.querySelectorAll()documentation for Node.js driver

答案 1 :(得分:0)

首先尝试使用Cassandra客户端,确保Cassandra正常工作并且可以访问它。之后,尝试使用代码。 您也可以尝试使用telnet或netcat访问127.0.0.1:9042,以查看端口是否已打开并正在侦听。您也可以将netstat用于此任务。