Come posso elencare i risultati di Cassandra cql?Devo analizzare JSON?
-
29-10-2019 - |
Domanda
Come posso analizzare il risultato del mio stile json da Cassandra? Sto usando la gem cassandra-cql per rails e voglio analizzare il risultato della query per elencare tutti i messaggi.La mia query è simile a:
def self.get_messages uid
@@db.execute("SELECT * FROM messages WHERE uid=?", uid)
end
come posso elencare tutti i messaggi?La mia visualizzazione attuale è:
<% json_dec = ActiveSupport::JSON.decode(u.row.to_json) %>
<% json_dec.each do |f| %>
<%= f[1] %><br/>
<%end%>
e restituisce:
1
[{"name"=>"uid", "value"=>"1", "timestamp"=>-1}, {"name"=>"1326751801", "value"=>"test content", "timestamp"=>1326751801970000}, {"name"=>"1326754147", "value"=>"some content to test", "timestamp"=>1326754147612000}]
Esiste un modo migliore per la query?come fanno gli altri a risolvere questo problema?
Soluzione
La codifica in json e la decodifica di nuovo non hanno molto senso.Invece puoi chiamare #to_hash
sull'oggetto riga che ti darà un hash di column_name => value
.Quindi potresti ripetere su questo:
<% row.to_hash.each do |key, value| %>
<p>key: <%= key %>, value: <%= value %></p>
<%end%>
Sembra anche che tu debba cambiare la tua implementazione di get_message per chiamare fetch
:
def self.get_messages uid
@@db.execute("SELECT * FROM messages WHERE uid=?", uid).fetch
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow