Я работаю над приложением Rails, которое отслеживает транзакции между адресами, используя Neo4j в качестве базы данных. Когда я пытаюсь запустить этот запрос:
Neo4j::Session.query("MATCH (sender:Address {address: 'abc123'})-[transaction:SENT_TO]->(receiver:Address) RETURN sender, transaction, receiver").to_a
Я возвращаю массив, как и ожидалось, но элемент transaction
возвращается как указатель CypherRelationship, а не как структура его свойств, как это делается для адресов отправителя и получателя:
=> [#<struct sender=#<Address uuid: nil, address: "abc123", user_tags: nil>, transaction=CypherRelationship 30, receiver=#<Address uuid: nil, address: "xyz321", user_tags: nil>>]
Если я попытаюсь получить одно из свойств транзакции, выполнив что-то вроде transaction.props['amount']
, это вызовет запуск нового запроса Cypher. Поскольку есть несколько свойств, которые я хочу получить для каждой транзакции, и большое количество транзакций, которые будут возвращены, я хотел бы, чтобы первоначальный запрос просто возвращал свойства отношения в виде структуры внутри массива.
Это работает так, как я хочу, когда я запускаю запрос непосредственно в Neo4j, поэтому я подозреваю, что это проблема с драгоценным камнем neo4j-core (или моим его использованием) ... есть идеи?
Спасибо за вашу помощь!