Existe uma pergunta com o titulo "Nested" com o seguinte conteudo:
Qual a diferença entre os dois mapas a seguir ao serem utilizados para adicionar dados no banco?
{:produto/nome "Camiseta" :produto/slug "/camiseta" :produto/preco 30M :produto/id (model/uuid) :produto/categoria {:categoria/nome "Roupas" :categoria/id meu-uuid}}
{:produto/nome "Dama" :produto/slug "/dama" :produto/preco 15M :produto/id (model/uuid) :produto/categoria esporte-id}
A resposta correta é:
O primeiro utiliza uma categoria baseada no uuid e o segundo usa necessariamente uma categoria existente.
O id da primeira também pode existir e, portanto, não adicionar, somente referenciar.
Pra mim está um pouco confuso:
O primeiro não usa o look up ref, então provavelmente ele vai tentar criar uma categoria nova. Caso esse UUID já exista ele vai atualizar o nome da categoria ou ele vai ignorar o nome e simplesmente referenciar ainda que nao seja utilizado um lookup ref? Eu entendi que o lookup ref é utilizado com o []
e não com o {}
. O correto seria:
{:produto/nome "Camiseta" :produto/slug "/camiseta" :produto/preco 30M :produto/id (model/uuid) :produto/categoria [:categoria/id meu-uuid]}
Dessa forma será utilizado o lookup ref.
(Vou testar o que acontece caso envia um objeto para ser criado porém ele já está criado na base de dados).
Obrigado! :)