无法从node.js远程写入Cassandra服务器

时间:2017-04-08 22:44:16

标签: node.js cassandra

环境:操作系统:Debian,Cassandra:3.10,Node.js 7.5.0,cassandra-driver:3.2.0

错误: (node:7484)UnhandledPromiseRejectionWarning:未处理的promise promise(拒绝ID:1):错误:所有尝试查询的主机都失败了。第一个主机尝试,192.168.10.151:9042:错误:连接ECONNREFUSED 192.168.10.151:9042。请参阅innerErrors。(node:7484)DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。

Nodejs代码:

var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
var fs = require('fs');
var cassandra = require('cassandra-driver');
var async = require('async');
var client = new cassandra.Client({contactPoints: ['192.168.10.151'], keyspace: 'users'});

router.post('/', function(req, res, next) {
    var query = 'INSERT INTO userAuth(email,password) VALUES(req.body.email,req.body.password)';
    client.execute(query);
    });

module.exports = router;

我不确定我做错了什么。

2 个答案:

答案 0 :(得分:0)

你的插入语句似乎也没有效果。你可以试试吗

'INSERT INTO userAuth(email,password) VALUES(?,?)'

然后

execute(query, [req.body.email, req.body.email]);

加上我认为为查询结果处理添加函数可能是个好主意

function(n, row) {
    console.log('everything is o.k.');
},
function (err) {
   console.log('something went wrong', err);
}

此错误似乎与此非常相似,因此请尝试将cassandra.yaml文件中的广播地址更新为192.168.10.151

dse-driver connection refused

答案 1 :(得分:0)

你确定你没有cassandra用户吗?

如果你有,请以这种方式连接到cassandra:

const authProvider = new cassandra.auth.PlainTextAuthProvider('user', 'pass');

const client = new cassandra.Client({ contactPoints: ['192.168.10.151'], keyspace: 'users', authProvider: authProvider});