Comment puis-je répertorier le résultat Cassandra CQL? Dois-je analyser JSON?
-
29-10-2019 - |
Question
Comment puis-je analyser le résultat de mon style JSON de Cassandra? J'utilise le Cassandra-CQL Gem pour les rails et je souhaite analyser le résultat de la requête pour répertorier tous les messages. Ma requête ressemble:
def self.get_messages uid
@@db.execute("SELECT * FROM messages WHERE uid=?", uid)
end
Comment puis-je répertorier tous les messages? Ma vue actuelle est:
<% json_dec = ActiveSupport::JSON.decode(u.row.to_json) %>
<% json_dec.each do |f| %>
<%= f[1] %><br/>
<%end%>
Et il revient:
1
[{"name"=>"uid", "value"=>"1", "timestamp"=>-1}, {"name"=>"1326751801", "value"=>"test content", "timestamp"=>1326751801970000}, {"name"=>"1326754147", "value"=>"some content to test", "timestamp"=>1326754147612000}]
Y a-t-il un meilleur moyen pour la requête? Comment les autres résolvent-ils ce problème?
La solution
Encoder à JSON et le décodage à nouveau n'a pas beaucoup de sens. Au lieu de cela, vous pouvez appeler #to_hash
sur l'objet de ligne qui vous donnera un hachage de column_name => value
. Ensuite, vous pourriez itérer à ce sujet:
<% row.to_hash.each do |key, value| %>
<p>key: <%= key %>, value: <%= value %></p>
<%end%>
Il semble également que vous deviez modifier votre implémentation de get_message pour appeler fetch
:
def self.get_messages uid
@@db.execute("SELECT * FROM messages WHERE uid=?", uid).fetch
end