Size: a a a

Clojure — русскоговорящее сообщество

2020 December 30

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
{:db/id "temp-id"
:some/attr "value"}
{:db/id parent-id
:entry/children ["temp-id"]}
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Ivan Grishaev
думаю, так:
{:db/id parent-id
:entry/children [{new children map}]}
Почему-то если вызвать второй раз, то children не дополняется, а перезаписывается
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Tim Plotnikov
Почему-то если вызвать второй раз, то children не дополняется, а перезаписывается
Я выше код присылал. Это не помогло? Или какой-то другой вопрос? Можешь сказать что ты хочешь на входе и на выходе?
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
Я выше код присылал. Это не помогло? Или какой-то другой вопрос? Можешь сказать что ты хочешь на входе и на выходе?
Да, спасибо за пример, я подсмотрел синтаксис)
Но не помогло
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
На входе хочу айдишник существующей записи в базе и данные для создания новой записи.
На выходе - чтобы к существующей записи добавилась новая
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
А чем мой пример не устраивает? Child b
источник

CD

Camina Drummer in Clojure — русскоговорящее сообщество
источник

Г

Григорий in Clojure — русскоговорящее сообщество
Да, спасибо. Я по прыдыдущему туториилу делал, и все сработало.
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
А чем мой пример не устраивает? Child b
Там создание родителя и чайлда происходит в одной «транзакции». Попробуйте разделить это на два запроса, может я просто опечатался где-то
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
А чем мой пример не устраивает? Child b
С Child B у меня ругается на то, что тип должен быть ref хотя он точно ref
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Tim Plotnikov
Почему-то если вызвать второй раз, то children не дополняется, а перезаписывается
Возможно, особенность датаскрипта. В датомике должно работать
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Ivan Grishaev
Возможно, особенность датаскрипта. В датомике должно работать
Да, или баг датаскрипта))
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Tim Plotnikov
С Child B у меня ругается на то, что тип должен быть ref хотя он точно ref
(let [schema {:entity/children {:db/cardinality :db.cardinality/many
                               :db/valueType   :db.type/ref}}
     db     (-> (d/empty-db schema)
                (d/db-with [{:db/id           1
                             :entity/title    "Hello"
                             :entity/children #{2}}
                            {:db/id        2
                             :entity/title "child A"}])

                (d/db-with [{:db/id            3
                             :entity/title     "child B"
                             :entity/_children 1}]))]
 (-> db
     (d/entity 1)
     :entity/children
     (->> (map :entity/title))))


"child A", "child B"
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
обрати внимание на подчеркивание, тут обратная ссылка :entity/_children
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
обрати внимание на подчеркивание, тут обратная ссылка :entity/_children
Да, у меня на неё и ругался
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Tim Plotnikov
Да, у меня на неё и ругался
а как ругался и какая версия и какая платформа?
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Только я кстати не db-with использую, а d/transact!
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Tim Plotnikov
Только я кстати не db-with использую, а d/transact!
(let [schema {:entity/children {:db/cardinality :db.cardinality/many
                               :db/valueType   :db.type/ref}}
     db     (d/create-conn schema)]
 
 (d/transact! db [{:db/id           1
                   :entity/title    "Hello"
                   :entity/children #{2}}
                  {:db/id        2
                   :entity/title "child A"}])
 (d/transact! db [{:db/id            3
                   :entity/title     "child B"
                   :entity/_children 1}])
 (-> @db
     (d/entity 1)
     :entity/children
     (->> (map :entity/title))))

так тоже работает
я запускаю на jvm, datascript 1.0.2
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
(let [schema {:entity/children {:db/cardinality :db.cardinality/many
                               :db/valueType   :db.type/ref}}
     db     (d/create-conn schema)]
 
 (d/transact! db [{:db/id           1
                   :entity/title    "Hello"
                   :entity/children #{2}}
                  {:db/id        2
                   :entity/title "child A"}])
 (d/transact! db [{:db/id            3
                   :entity/title     "child B"
                   :entity/_children 1}])
 (-> @db
     (d/entity 1)
     :entity/children
     (->> (map :entity/title))))

так тоже работает
я запускаю на jvm, datascript 1.0.2
Хах, сработало))
Была ошибка вот где:
(d/create-conn schema)

А у меня по каким-то непонятным причинам было
(d/create-conn (d/empty-db schema))
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Платформа js/browser
источник