node.js - 如何将 Node.js 与 Cassandra 连接?

标签 node.js cassandra

50 年来我一直在尝试将 Node.js 与本地主机上的 Cassandra 连接起来(感觉很喜欢),但还没有弄清楚它们如何协同工作。我将不胜感激任何可能导致解决方案的建议。

项目目录:

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

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']});

我的路由器是这样设置的。

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");
    }
  });
});

我应该像这样让 cassandra 在后台运行吗?

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

我在这里缺少什么?

最佳答案

根据您提供的错误消息,您似乎在 Cassandra 实例上设置了 PasswordAuthenticator 身份验证或其他身份验证器。检查 cassandra.yaml 文件中的“authenticator”属性,是否设置为 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')};

使用身份验证时可用的默认用户是“cassandra”,密码为“cassandra”,但您可以按照 Configuring Authentication 更改此设置。 .

关于node.js - 如何将 Node.js 与 Cassandra 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37591435/

相关文章:

hadoop - cassandra.input.split.size 未反射(reflect)在 DSE3.2.4 Hadoop 中

java - 在 cassandra 中导出/导入数据

hadoop - Cassandra + Solr/Hadoop/Spark - 选择合适的工具

node.js - Node : Cannot find module 'passport'

node.js - 将 Node.js 应用程序推送到 Heroku 时跳过 "Installing dependencies with npm"步骤

node.js - Travis CI 成功后脚本中没有输出

apache-spark - 存储传入流数据的最佳方式是什么?

javascript - 水平排列图像 - React Native - Flex 不工作

node.js - Nodejs - 如何跟踪错误?

Cassandra 将 Keyspace 存储到新磁盘