다른 사용자 유형을 따를 수있는 Datomic 데이터베이스에 사용자 엔티티 유형이 있습니다. 내 문제는 한 사용자가 이미 다음 또 다른 사용자가 다음에 올 때 온다 : Datomic에서 재귀 참조 연속화하기
User A follows user B and also User B follows user A
나는 때문에 :user/follows-users
속성에 무한 재귀 (내가 추측하고있어)의 StackOverflowError가 얻을 (체셔 사용) 직렬화하려고
그런 방식으로 서로를 참조하는 두 개의 Datomic 엔티티를 (API의 json으로) 직렬화하면 어떻게 될까요? 여기
는 기본 스키마의 :; schema
[{:db/id #db/id[:db.part/db]
:db/ident :user/username
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db/unique :db.unique/identity
:db.install/_attribute :db.part/db}
{:db/id #db/id[:db.part/db]
:db/ident :user/follows-users
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/many
:db.install/_attribute :db.part/db}
; create users
{:db/id #db/id[:db.part/user -100000]
:user/username "Cheech"}
{:db/id #db/id[:db.part/user -200000]
:user/username "Chong"}
; create follow relationships
{:db/id #db/id[:db.part/user -100000]
:user/follows-users #db/id[:db.part/user -200000]}
{:db/id #db/id[:db.part/user -200000]
:user/follows-users #db/id[:db.part/user -100000]}]
그리고 데이터베이스가 REPL에 등을 설정하면 :
user=> (use '[cheshire.core :refer :all])
nil
user=> (generate-string (d/touch (d/entity (d/db conn) [:user/username "Cheech"])))
StackOverflowError clojure.lang.RestFn.invoke (RestFn.java:433)