Тип данных Nodejs cassandra

Я использую драйвер node-cassandra-cql ( https://github.com/jorgebay/node-cassandra-cql), чтобы сделать выборочный выбор в семействе столбцов cassandra.

У моего cf есть три столбца с этими типами данных:

1 - value -> text
2 - date  -> timestamp
3 - hits  -> counter

Используя nodeJS для извлечения строк, я делаю:

client.execute('SELECT date,value,hits FROM cf LIMIT 100', [],
      function(err, result) {
        if(err){
            var error = {error:true,message:err};
            res.send(error);
        }
        else{
            var trends = {};
            for(var i=0;i<result.rows.length;i++){
                var row      = result.rows[i];
                console.log(row.date);
                console.log(row.hits);
            }
        }
        }
);

Журнал консоли дает мне:

{
    "low": 1342763392,
    "high": 323,
    "unsigned": false
}
{
    "low": 1,
    "high": 0,
    "unsigned": false
}

Что мне нужно сделать, чтобы получить правильное значение?

Спасибо!

3 ответа

Решение

Значение столбца счетчика Cassandra - это 64-разрядное целое число со знаком (bigints), в драйвере Node.js оно представлено как Long Closure Google.

Чтобы получить строковое представление десятичного значения bigint, вы можете использовать метод #toString().

//"1", "2", ...
row.hits.toString();

Ответ от jorgebg также применим при выполнении COUNT(*).

Например: SELECT COUNT (*) FROM my_table;

В этом случае, чтобы извлечь значение, которое я использовал: result.rows[0].count.toString();

      const str = result.first().count;
const count = JSON.parse(str);
Другие вопросы по тегам