【问题标题】:Neo4jrb with rails --api: return connected nodes带有 rails --api 的 Neo4jrb:返回连接的节点
【发布时间】:2016-12-07 04:12:47
【问题描述】:

超级简单的设置:

  • 使用--api 创建了一个新的rails 应用程序并添加了生成器/框架
  • 创建了一个具有name 属性和has_many 与其他Artefacts 关系的模型(Artefacts)(无聊地命名为.artefacts
  • 创建了 2 个节点,并加入了它们 (node1.artefacts = node2)

现在,当浏览到 /artefacts 时,返回的 JSON 只是 2 个节点。

  • Rails 如何返回关系

  • 在路上; Rails 如何返回自定义 JSON 布局,例如:

    [{"artefact":{"name":"Node1","id":"e6571172-889c-4dd9-abca-a522f28c970d", artefacts: ["0643d8c5-fc67-431c-b015-7c5894439058", "5e7ceb40-18da-474e-8fe0-22d3887943b4"]}}]

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5 neo4j.rb


    【解决方案1】:

    这完全取决于您如何进行序列化。默认情况下,Rails 只会序列化节点对象。您应该能够使用此处为ActiveRecord 建议的include 选项:

    Include associated model when rendering JSON in Rails

    我个人也喜欢用于序列化对象的json:api 标准。最大的优势之一是您可以包含关联的对象,并且这些对象可以有效地侧载,因此您不会在响应中包含重复项。我喜欢它的另一点是它是一个标准,而当我过去在应用程序中渲染 JSON 时,它通常只是开发人员认为最好的卡片。

    jsonapi-resources gem 很受欢迎:

    https://github.com/cerebris/jsonapi-resources

    该 gem 负责大量 Rails 集成并为您创建控制器和路由,但与 ActiveNode 的集成存在一些问题。我已经成功使用了jsonapi-serializers gem,但它需要你自己做更多的事情:

    https://github.com/fotinakis/jsonapi-serializers

    你可以看看这个 Rails 例子:

    https://github.com/fotinakis/jsonapi-serializers#rails-example

    【讨论】:

    • 感谢您的信息;我能够完成返回连接的节点。 jsonapi-resources gem 对于未来的使用看起来很有吸引力,但尝试实现它是一个快速的旅程,在一个陡峭的兔子洞里。仅仅为了遵循 JSON:API 标准就值得与 Neo4jrb 集成吗?
    • 不确定您的意思,但要澄清一下 jsonapi gem 不仅适用于 neo4j gem,而且适用于 ActiveRecord .真的 JSON:API 与您的问题没有任何关系,它只是我喜欢使用的 JSON 标准;)
    • 我的意思是; JSON:API 看起来是一个很好的方向,但我很难实现 gem(一次学习太多),所以我的问题是:到达我想去的地方(返回一个 JSON:API 响应连接节点)是jsonapi-resources gem 学习的正确方法吗?
    猜你喜欢
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    相关资源
    最近更新 更多