Как я могу перечислить результаты Cassandra cql?Должен ли я анализировать JSON? - PullRequest
0 голосов
/ 17 января 2012

Как я могу разобрать мой результат в стиле JSON от Кассандры?Я использую гем cassandra-cql для рельсов и хочу проанализировать результат запроса, чтобы вывести список всех сообщений.Мой запрос выглядит так:

def self.get_messages uid
  @@db.execute("SELECT * FROM messages WHERE uid=?", uid)
end

Как я могу перечислить все сообщения?Мой текущий вид:

<% json_dec = ActiveSupport::JSON.decode(u.row.to_json) %>
<% json_dec.each do |f| %>
  <%= f[1] %><br/>
<%end%>

и он возвращает:

1
[{"name"=>"uid", "value"=>"1", "timestamp"=>-1}, {"name"=>"1326751801", "value"=>"test content", "timestamp"=>1326751801970000}, {"name"=>"1326754147", "value"=>"some content to test", "timestamp"=>1326754147612000}]

Есть ли лучший способ для запроса?как другие решают эту проблему?

1 Ответ

2 голосов
/ 17 января 2012

Кодирование в json и повторное декодирование не имеют особого смысла.Вместо этого вы можете вызвать #to_hash для объекта строки, который даст вам хэш column_name => value.Затем вы можете повторить это:

<% row.to_hash.each do |key, value| %>
  <p>key: <%= key %>, value: <%= value %></p>
<%end%>

Также похоже, что вам нужно изменить реализацию get_message, чтобы она вызывала fetch:

def self.get_messages uid
  @@db.execute("SELECT * FROM messages WHERE uid=?", uid).fetch
end 
...