我有一个带有 Neo4j.rb 的 Jruby on Rails 应用程序和一个模型(假设为 Auth),定义如下:
class Auth < Neo4j::Rails::Model
property :uid, :type => String, :index => :exact
property :provider, :type => String, :index => :exact
property :email, :type => String, :index => :exact
end
这段代码:
a = Auth.find :uid => 324, :provider => 'twitter'
# a now represents a node
a.to_json
# outputs: {"auth":{"uid": "324", "provider": "twitter", "email": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="41242c20282d012439202c312d246f222e2c" rel="noreferrer noopener nofollow">[email protected]</a>"}}
请注意,JSON 表示中缺少节点 ID。我的应用程序中有一个 RESTful API,我需要 ID 来执行删除和更新操作。
我尝试了这个,看看它是否有效:
a.to_json :only => [:id]
但它返回一个空的 JSON {}
。
有什么方法可以在不重写整个 to_json
方法的情况下获取 JSON 表示中的节点 ID?
更新同样的问题也适用于to_xml
方法。
谢谢!
最佳答案
我正在回答我自己的问题。我仍然认为有更好的方法来做到这一点,但是现在,我正在使用以下技巧:
在/config/initializers/neo4j_json_hack.rb
中,我放置了以下代码:
class Neo4j::Rails::Model
def as_json(options={})
repr = super options
repr.merge! '_nodeId' => self.id if self.persisted?
end
end
现在,我持久化的 Neo4j::Rails::Model
对象的每个 JSON 表示都有一个 _nodeId
参数。
关于json - Neo4j::Rails::Model to_json - 节点 ID 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11622127/