现在,我在管理一个 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.
我怎样才能让它工作?
2条答案
按热度按时间efzxgjgh1#
首先尝试使用cassandra客户端,确保cassandra正常工作,并且您可以访问它。在那之后,试着用代码。您还可以尝试使用telnet或netcat访问127.0.0.1:9042,以查看端口是否已打开并正在侦听。您也可以将netstat用于此任务。
cbeh67ev2#
你的问题是你在用
127.0.0.1
作为价值localDataCenter
参数,但不应设置为机器的地址,而应设置为cassandra数据中心的名称—在您的示例中,这是datacenter1
. 将该参数的值更改为datacenter1
,它将开始工作。它将是:
p、 我建议您阅读node.js驱动程序的文档,以及“使用datastax驱动程序开发应用程序”指南。