2012-10-15 21 views
11

Continuo a riscontrare lo stesso problema quando sto tentando di eseguire una query su un server Cassandra. Ho installato npm-node-cassandra-client versione 0.9.5.node.js node-cassandra-richiesta del client non riuscita

var Connection = require('cassandra-client').PooledConnection; 

var hosts = ['host1:9160','host2:9160']; 
var cassandra = new Connection({'hosts': hosts, 'keyspace': 'keyspace'}); 
cassandra.on('log', function(level, message, obj) { 
    console.log('log event: %s -- %j', level, message); 
}); 
var cql = "SELECT * FROM columnFamily LIMIT 1"; 

cassandra.execute(cql, function(err, rows) { 
    if(err) console.log("erreur à la requete"); 

    console.log(rows); 
    cassandra.shutdown(function() { 
    console.log("connectoin pool shutdown"); 
    }); 
}) 

Sembra che la connessione abbia esito positivo. Ma io continuo a correre nel seguente errore:

log event: info -- "connecting host:9160(1)" 
log event: cql -- "SELECT * FROM columnFamily LIMIT 1" 
DEBUG: 
DEBUG: /PATH/cassandra-client/node_modules/thrift/lib/thrift/connection.js:90 
DEBUG:   throw e; 
DEBUG:    
DEBUG:^
DEBUG: TypeError: undefined is not a function 
    at /PATH/node_modules/cassandra-client/lib/driver.js:701:5 
    at /PATH/node_modules/cassandra-client/lib/driver.js:716:15 
    at /PATH/node_modules/cassandra-client/lib/driver.js:453:9 
    at/PATH/node_modules/cassandra-  client/node_modules/thrift/lib/thrift/connection.js:80:11 
    at Object.recv_execute_cql_query (/PATH/node_modules/cassandra-client/lib/gen-nodejs/Cassandra.js:6219:12) 
    at /PATH/node_modules/cassandra-cli ent/node_modules/thrift/lib/thrift/connection.js:83:37 
    at Socket.<anonymous> (/PATH/node_modules/cassandra-client/node_modules/thrift/lib/thrift/transport.js:69:9) 
    at Socket.emit (events.js:67:17) 
    at TCP.onread (net.js:347:14) 
DEBUG: Program node app.js exited with code 1 

Qualunque sia la richiesta è, io continuo ad avere lo stesso errore.

+1

ho provato con Eleno, invece di cassandra-client, e sembra funzionare bene. – Florent

risposta

2

So che è un po 'tardi, ma si chiama cassandra.execute con due parametri (query e callback) mentre accetta tre (query, elenco di parametri di query e callback).

provare a cambiare:

cassandra.execute(cql, function(err, rows) { 
    if(err) console.log("erreur à la requete"); 

    console.log(rows); 
    cassandra.shutdown(function() { 
     console.log("connectoin pool shutdown"); 
    }); 
}) 

a

cassandra.execute(cql, [], function(err, rows) { 
    if(err) console.log("erreur à la requete"); 

    console.log(rows); 
    cassandra.shutdown(function() { 
     console.log("connectoin pool shutdown"); 
    }); 
}) 
+0

che non è necessario. parametro è opzionale – Abhi

+1

@Abhi era usato nella versione 0.9.5, poiché 'execute' chiamava' bind' direttamente, che a sua volta usava '.length' del secondo argomento. [Controlla per conto tuo] (https://github.com/racker/node-cassandra-client/blob/v0.9.5/lib/driver.js#L410-L411) – soulcheck

Problemi correlati