首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在数据体中,如何向现有实体的多个属性添加新实体(作为引用)

在数据体中,如何向现有实体的多个属性添加新实体(作为引用)
EN

Stack Overflow用户
提问于 2022-07-27 17:32:44
回答 1查看 101关注 0票数 0

举个例子,我将使用一个绘图作为现有的实体,它将添加两个新的形状。这是tx失败的原因:

代码语言:javascript
运行
复制
[{:shape/id "BKF806TXXTAFWII0", :db/id "22NF08ZVGH9N7QGG_0"}
 {:shape/id "YKIZU4CJC0JXJKVQ", :db/id "22NF08ZVGH9N7QGG_1"}
 [:db/add 17592186047451 :drawing/shapes ["22NF08ZVGH9N7QGG_0" "22NF08ZVGH9N7QGG_1"]]]

如您所见,现有绘图的:db/id为17592186047451。我正在尝试创建两个新的形状,并将它们添加到基数多属性:drawing/shapes中。"22NF08ZVGH9N7QGG_0“和"22NF08ZVGH9N7QGG_1”是被翻译成同样的新:db/id的模板,不管它们出现在哪里。

我应该说这幅画没有任何现存的形状。如果是这样的话,我会希望他们成为孤儿。

这是我得到的错误消息:

执行错误(ExceptionInfo)位于datomic.client.api.异步/ares (async.clj:58)。不能解释为关键字: 22NF08ZVGH9N7QGG_0,无前导:

我也尝试过类似的方法:

代码语言:javascript
运行
复制
[{:shape/id "9HTL5BMMHT6QUJM6", :db/id "22NF08ZVGH9N7QGG_0"}
 {:shape/id "O5UB9IG9UB8KDVA2", :db/id "22NF08ZVGH9N7QGG_1"}
 [:db/add 17592186047451 :drawing/shapes "22NF08ZVGH9N7QGG_0"]
 [:db/add 17592186047451 :drawing/shapes "22NF08ZVGH9N7QGG_1"]]

提供此错误消息:

执行错误(ExceptionInfo)位于datomic.client.api.异步/ares (async.clj:58)。同一事务冲突中的两个数据空间{:d1 17592186047451 :绘图/形状17592186049126 13194139538021 true,:d2 17592186047451 :绘图/形状17592186049127 13194139538021真}

这将提供与第一次尝试相同的错误消息:

代码语言:javascript
运行
复制
[{:db/id 17592186047451, :drawing/shapes ["22NF08ZVGH9N7QGG_0" "22NF08ZVGH9N7QGG_1"]}
 {:shape/id "3DZYWHEPQIAELF25", :db/id "22NF08ZVGH9N7QGG_0"}
 {:shape/id "GJ804SOOU36YQX6Y", :db/id "22NF08ZVGH9N7QGG_1"}]

通过一种嵌套的方式来摆脱这些陷阱:

代码语言:javascript
运行
复制
[{:db/id 17592186047451,
  :drawing/shapes
  [{:shape/id "GEMRMRFG0E6N262M"}
   {:shape/id "HTH2C7R90BQFFNXT"}]}]

只产生以下错误消息:

执行错误(ExceptionInfo)位于datomic.client.api.异步/ares (async.clj:58)。无法解析实体:{:shape/id "GEMRMRFG0E6N262M"}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-28 00:42:17

你的第二个例子

代码语言:javascript
运行
复制
[{:shape/id "9HTL5BMMHT6QUJM6", :db/id "22NF08ZVGH9N7QGG_0"}
 {:shape/id "O5UB9IG9UB8KDVA2", :db/id "22NF08ZVGH9N7QGG_1"}
 [:db/add 17592186047451 :drawing/shapes "22NF08ZVGH9N7QGG_0"]
 [:db/add 17592186047451 :drawing/shapes "22NF08ZVGH9N7QGG_1"]]

和第三个例子

代码语言:javascript
运行
复制
[{:db/id 17592186047451, :drawing/shapes ["22NF08ZVGH9N7QGG_0" "22NF08ZVGH9N7QGG_1"]}
 {:shape/id "3DZYWHEPQIAELF25", :db/id "22NF08ZVGH9N7QGG_0"}
 {:shape/id "GJ804SOOU36YQX6Y", :db/id "22NF08ZVGH9N7QGG_1"}]

应该行得通。也许您的:drawing/shapes属性不是:db.cardinality/many

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73142317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档