json - Neo4j::Rails::Model to_json - 节点 ID 丢失

标签 json serialization neo4j jrubyonrails activemodel

我有一个带有 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/

相关文章:

javascript - 等待ajax结果绑定(bind) knockout 模型

javascript - 根据 javascript 中的条件合并两个嵌套的 JSON 对象

ruby-on-rails - 升级到 Rails 5 时,序列化为哈希的现有数据会产生错误

Java - 检查索引是否已经存在 neo4j(if 子句)

neo4j - 领域驱动设计与图数据库

sql-server - 将 T-SQL json 列读入 varchar 变量

jquery - 如何在 asp.net 中使用 jQuery UI 自动完成

java - XmlElement 注解可以有多种类型吗?

c - 为什么这个 uint16_t 变量声明不起作用?

java - 使用 Neo4j 2.0 和 Spring Data 3.0 Rest 启动时出现异常