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



现在,我正在运行一个带有Cassandra的docker。我有一个 JavaScript 文件位于需要连接到 Cassandra 的 docker 外部。我找到了一个与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.

我怎样才能让它工作?

您的问题是您将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();

附言我建议阅读 Node.js 驱动程序的文档,以及"使用 DataStax 驱动程序开发应用程序"指南。

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

最新更新