【问题标题】:How do I properly set up the Cassandra client in Javascript?如何在 Javascript 中正确设置 Cassandra 客户端?
【发布时间】:2020-03-31 20:24:20
【问题描述】:

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

我怎样才能让它工作?

【问题讨论】:

    标签: javascript node.js cassandra cassandra-2.1


    【解决方案1】:

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

    附:我建议阅读documentation for Node.js driver,以及"Developing applications with DataStax drivers" guide

    【讨论】:

    • 谢谢;但现在我收到了Error: Cannot find module 'thrift'
    • 我认为这可能与安装有关 - 不幸的是我不是 Node.js 人。可以community.datastax.com问吗?
    【解决方案2】:

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

    【讨论】:

    • 他的连接正常 - 他只是没有传递正确的参数。
    猜你喜欢
    • 2018-07-18
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2019-12-18
    • 2013-11-15
    相关资源
    最近更新 更多