Nodejs Cassandra Client [node-cassandra-client] - PullRequest
2 голосов
/ 31 января 2012

Я попытался подключиться к своему кластеру кассандры [версия 1.0.6] через nodejs, используя node-cassandra-client

Это мой пример сценария

var Connection = require('cassandra-client').Connection;
var con = new Connection({host:'x.x.x.x', port:9160, keyspace:'Stats', timeout:10000});
console.log(con);
con.execute('UPDATE TestCF ?=? WHERE key=?', ['cola', '1', '20120132'], function(err) {
    if (err) {
        console.log("Failed");
    } else {
        console.log("success");
    }
});

При выполнении сценария

    The "sys" module is now called "util". It should have a similar interface.
    node-cassandra-client.driver: connecting x.x.x.x:9160 {}
    { validators: {},
      client: null,
      connectionInfo: 
       { host: 'x.x.x.x',
         port: 9160,
         keyspace: 'Stats',
         timeout: 10000 },
      timeout: 10000 }

    node.js:201
            throw e; // process.nextTick error, or 'error' event on first tick
                  ^
    TypeError: Cannot call method 'execute_cql_query' of null
        at [object Object].execute (/home/tamil/workspace/TestProjects/node-cass/node_modules/cassandra-client/lib/driver.js:367:17)
        at Object.<anonymous> (/home/tamil/workspace/TestProjects/node-cass/index.js:5:5)
        at Module._compile (module.js:432:26)
        at Object..js (module.js:450:10)
        at Module.load (module.js:351:31)
        at Function._load (module.js:310:12)
        at Array.0 (module.js:470:10)
        at EventEmitter._tickCallback (node.js:192:40)

Моя статистика для nodetool

Address         DC          Rack        Status State   Load            Owns    Token                                       
x.x.x.x         datacenter1 rack1       Up     Normal  1.03 MB         100.00% 0     

В чем причина ошибки?и нужна помощь, чтобы исправить это

Ответы [ 2 ]

12 голосов
/ 03 февраля 2012

клиент в вашем соединении пуст. Вы должны сначала подключиться (). Вот пример (игнорирует все ошибки):

var con = new Connection({host:'x.x.x.x', port:9160, keyspace:'Stats', timeout:10000});
con.connect(function(err) {
  assert.ifError(err);
  con.execute('SELECT COUNT(*) FROM TestCF', [], function(err, rows) {
    con.close(function(err) {
      // you're done now.
    });
  });
});

Я рекомендую использовать async для обработки порядка соединения, запроса, закрытия и т. Д.

2 голосов
/ 03 февраля 2012

Похоже, какая-то проблема с экономным драйвером node.js.Мне повезло больше с Хеленус .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...