如何将Node.js与Cassandra连接起来?

tet*_*tet 2 cassandra node.js

50年来,我一直试图将Node.js与Cassandra连接到localhost,但是还没有弄清楚它们是如何协同工作的。我将不胜感激任何可能导致解决方案的建议。

项目目录:

project  - app - some files
        \- build - index.js, index.html, etc.(I start the server by "node index.js")
        \- node_modules - some modules
        \- signup - some files to be minified
        \- signin - some files to be minified
        \- apache-cassandra-3.0.6 - bin, conf, etc.(downloaded from tarball)
        \- package.json
        \- webpack.config.js
Run Code Online (Sandbox Code Playgroud)

Webpack运行正常,没有任何问题,因此Webpack配置中不存在该问题。
我可以使用cqlsh插入数​​据,所以问题不在于数据结构模型。

我认为问题在于我缺乏有关如何一起使用Node.js和Cassandra的知识。

我将Node.js与Cassandra连接的过程:

  1. 去建立目录
  2. node index.js
  3. 打开localhost:3000并找到由express.js路由的主页,显示没有问题。
  4. 转到注册页面并提交表格
  5. 错误(未插入数据)

我不确定哪个联系点是正确的“ 127.0.0.1:9042”或“ 127.0.0.1”

var client = new cassandra.Client({contactPoints:['127.0.0.1:9042']});
                   OR
var client = new cassandra.Client({contactPoints:['127.0.0.1']});
Run Code Online (Sandbox Code Playgroud)

我这样设置路由器。

var router = express.Router();
var insertUser = 'INSERT INTO keyspace.users (username, create_time, email, password) VALUES (?, ?, ?, ?);';

router.get"/", function(req, res) {
  res.sendFile(__dirname + '/index.html'); // This is working.
});

router.post("/signup", function(req, res) {
  var username = req.body.username;
  var email = req.body.email;
  var password = req.body.password;
  client.execute(insertUser, [username, now(), email, password], 
  { prepare: true }, function(err) {
    if (err) {
      console.log("error"); // I receive error.
    } else {
      console.log("success");
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

我应该让卡桑德拉这样在后台运行吗?

cd apache-cassandra-3.0.6-> cd bin->./cassandra

我在这里想念什么?

And*_*ert 5

根据您提供的错误消息,看起来您已经PasswordAuthenticator在Cassandra实例上设置了身份验证或其他身份验证器。检查你的“认证”属性在cassandra.yaml文件,将其设置为PasswordAuthenticatorAllowAllAuthenticator或其他什么东西?

如果使用PasswordAuthenticator,则可以通过将PlainTextAuthenticator实例传递给客户端选项来指定凭据,如下所示authProvider

var PlainTextAuthProvider = cassandra.auth.PlainTextAuthProvider;
var client = new cassandra.Client({ contactPoints:['127.0.0.1:9042'], 
                                    authProvider: new PlainTextAuthProvider('cassandra', 'cassandra')};
Run Code Online (Sandbox Code Playgroud)

使用身份验证时,可用的默认用户是密码为“ cassandra”的“ cassandra”,但是您可以按照“ 配置身份验证”进行更改。