我正在使用令人敬畏的neography创业板,并遇到了一个轻微的问题,将一个Cypher查询结果转换为一个结构化对象(OpenStruct.new.)
我不知道如何从列和数据查询结果创建散列或OpenStruct,这些列和查询结果是
{"columns"=>["p.pd_challenge_id", "p.author_id"], "data"=>[["158", "88"], ["158", "90"], ["158", "99"], ["158", "95"], ["158", "97"]]}我无法从它创建一个可用的散列。我试过几件事,包括
["data"].map{|x|{ "challenge_id" => x[1],"author_id"=>x[0]}}.to_json结果:
{{"challenge_id":158, "author_id":88}, {"challenge_id":158, "author_id":90}, {"challenge_id":158, "author_id":99}} etc.. (to which I simply cannot convert to a hash or openstruct)我要找的是存储在struct对象中的如下内容,这样脚手架视图就可以不修改地读取它:
{:challenge_id=>158, :author_id=>88}
{:challenge_id=>158, :author_id=>90}
{:challenge_id=>158, :author_id=>99}我的观点会寻找object.challenge_id
现在,我尝试在"challenge_id“上使用challenge_id,但在使用.map方法时没有效果。
我尝试过在“数据”上散列@mydata,这也不起作用。
是否有一种简单的方法可以将所有这些数据转换为结构化对象(OpenStruct.new .)这样我的表单就可以像读取活动记录查询的结果一样简单地读取它了吗?我可以用neo.get_node_properties来做这件事,但似乎不能让它正常工作。
发布于 2013-04-04 16:38:43
假设您有两个节点,具有名称和标题。
cypher = "start n = node(1,2) return n.name as name, n.title as title"
results = @neo.execute_query(cypher)
{"columns"=>["name", "title"], "data"=>[["Marc", "awesome"], ["Tom", "chief"]]} 然后你拿出你的结果然后这样做:
array_of_hashes = results["data"].map {|row| Hash[*results["columns"].zip(row).flatten] }这将给你留下:
[{"name"=>"Marc", "title"=>"awesome"}, {"name"=>"Tom", "title"=>"chief"}]
你可以停在这里或者..。
objects = array_of_hashes.map{|m| OpenStruct.new(m)}
[#<OpenStruct name="Marc", title="awesome">, #<OpenStruct name="Tom", title="chief">]
然后您可以访问
objects.first.name => "Marc“
https://stackoverflow.com/questions/15816109
复制相似问题