2016-12-07 2 views
1

Супер простая установка:Neo4jrb с рельсами --api: возвращающих подключенные узлы

  • Создано новое приложение рельсы с --api и добавил генератор/рамки
  • Создано одной модели (Артефакты) с атрибутом name и has_many отношения к другим Артефакты (муторно имени .artefacts)
  • Created 2 узлов, и присоединился к ним (node1.artefacts = node2)

Теперь, когда вы просматриваете до /artefacts, возвращаемый JSON является всего лишь двумя узлами.

  • Как 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-ресурсов выглядит привлекательным для будущего использования, но попытка его реализовать - это быстрое путешествие по крутому отверстию кролика. Стоит ли интегрироваться с Neo4jrb только для того, чтобы следовать стандарту JSON: API? – joshfindit

+0

Не знаете, что вы имеете в виду, но для того, чтобы прояснить, что jsonapi gems работает не только с жемчугом 'neo4j', но и работает (и в случае с jsonapi-resources'ом, предназначенным для работы) ActiveRecord.На самом деле JSON: API не имеет никакого отношения к вашему вопросу, это просто стандарт JSON, который мне очень понравился;) –

+0

Я хочу сказать: JSON: API выглядит как хорошее направление для продолжения, но мне трудно было внедрить драгоценный камень (слишком много, чтобы учиться сразу), поэтому мой вопрос: добраться до того места, где я хочу быть (возвращение ответа JSON: API с подключенным узлы) - это драгоценный камень 'jsonapi-resources', который нужно изучить? – joshfindit

Смежные вопросы