node.js Кассандра - PullRequest
       6

node.js Кассандра

0 голосов
/ 06 февраля 2012

Это программа nodejs.Как мне вернуть результат?

executeCQLQuery = function(query, PooledConnection, options) {
  var hosts = [options.host + ":" + options.port];
  var connection_pool = new PooledConnection({
    'hosts': hosts,
    'keyspace': options.keyspace
  });

  connection_pool.execute(query, [], function (err, rows) {
    if (err) {
      console.log(err);
    } else {
      return rows;
    }
    //console.log(rows);
    result = rows;
  });
  console.log(result);
  return result;
}
exports.executeCQLQuery = executeCQLQuery;

Ответы [ 2 ]

0 голосов
/ 13 февраля 2012

Имейте в виду, что библиотека узлов Кассандры асинхронна, как и большинство вещей в файле node.js. Вам нужно сделать все как надо, с помощью функции обратного вызова:

executeCQLQuery = function(query, PooledConnection, options, callback) {
var hosts = [options.host + ":" + options.port];
var connection_pool = new PooledConnection({
  'hosts': hosts,
  'keyspace': options.keyspace
});

connection_pool.execute(query, [], callback);

exports.executeCQLQuery = executeCQLQuery;

затем используйте это так:

executeCQLQuery('select foo from bar where key="bam"', PooledConnection, {host:'foo', port:1234}, function(err, rows) {
  // check for err
  // do something useful with rows.
});

Еще одно предложение: не имеет смысла использовать PooledConnection в качестве аргумента. Вы должны создать его экземпляр перед вызовом executeCQLQuery.

Контрольные примеры в cassandra-node всегда хороши для начала: http://code.google.com/a/apache-extras.org/p/cassandra-node/source/browse/test/test_driver.js#280

0 голосов
/ 11 февраля 2012

Вместо встроенного обратного вызова в функции execute (где вы проверяете ошибку строк) вы можете передать обратный вызов в соответствии с предложением тамильского языка, например:

connection_pool.execute(query, [], callback);

Тогда вы можете передать обратный вызов в вашу экспортированную функцию

executeCQLQuery = function(query, PooledConnection, options, callback) {
  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...