2016-12-07 61 views
1

超級簡單的設置:Neo4jrb與導軌--api:返回連接的節點

  • 創建一個新的導軌應用程式--api並用name屬性添加的發電機/框架
  • 創建單個模型(人工製品)和has_many關係到其他人工製品(乏味命名.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"]}}]

回答

1

這一切都取決於你如何序列化。默認情況下,Rails只會序列化節點對象。您應該能夠使用include選項,在這裏建議ActiveRecord

Include associated model when rendering JSON in Rails

我還親自喜歡json:api標準序列化對象。其中一個重要優點是可以包含關聯的對象,並且這些對象可以高效地進行側面裝載,以便在響應中不包含重複項。我喜歡的另一件事是它是標準,而當我在應用程序中呈現JSON時,往往只是開發人員認爲該卡最好。

jsonapi-resources寶石流行這樣的:

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

創業板需要多多關照了Rails集成和爲您創建控制器和路線,但也存在一些問題與ActiveNode整合。我用的jsonapi-serializers寶石成功,但它需要你爲自己做更多的事情:

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

你可以看看這個例子的Rails的它:

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

+0

謝謝信息;我能夠完成返回連接的節點。 jsonapi-resources gem看起來對未來的使用很有吸引力,但試圖實現它就是在一個陡峭的兔子洞中快速旅行。爲了遵循JSON:API標準,是否值得與Neo4jrb集成呢? – joshfindit

+0

不知道你的意思,但澄清jsonapi寶石不只是與'neo4j'寶石一起工作,而且還可以工作(並且在'jsonapi-resources'被設計用於ActiveRecord的情況下)。真的JSON:API與你的問題沒有任何關係,它只是我喜歡使用的JSON標準;) –

+0

我的意思是說; JSON:API看起來是一個很好的追求方向,但是我很難實現gem(一次學習太多),所以我側面的問題是:去我想要的地方(返回一個JSON:API響應連接節點)是'jsonapi-resources' gem是否正確的學習? – joshfindit