如何在javascript中正确设置cassandra客户端?

vc6uscn9  于 2021-06-10  发布在  Cassandra
关注(0)|答案(2)|浏览(766)

现在,我在管理一个 Docker ,上面有Cassandra。我有一个javascript文件,它位于docker外部,需要连接到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.

我怎样才能让它工作?

efzxgjgh

efzxgjgh1#

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

cbeh67ev

cbeh67ev2#

你的问题是你在用 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、 我建议您阅读node.js驱动程序的文档,以及“使用datastax驱动程序开发应用程序”指南。

相关问题