当然是一个愚蠢的问题,但希望应该能解决问题。
我正在关注https://docs.datomic.com/on-prem/getting-started/transact-schema.html,并且在本教程中处理架构的步骤是
user=> (d/transact conn {:tx-data movie-schema})
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试这个时,我得到
ClassCastException clojure.lang.PersistentArrayMap cannot be cast to java.util.List datomic.api/transact
Run Code Online (Sandbox Code Playgroud)
相反,当我只是做
(d/transact conn schema)
Run Code Online (Sandbox Code Playgroud)
这个对我有用。教程在这里是否缺少一些微妙之处?我错过了什么吗?(唯一的区别是我使用的是免费版而不是 Starter Pro 版)。
编辑:这篇文章的初始版本提到了模式,但这通常也适用于仅添加新事实(即使用{:tx-data foo}不起作用,但仅使用有效foo)。
我认为您的问题的原因是Peer API(其中transact接受列表)和Client API(其中transact接受包含密钥的映射:tx-data)之间的不一致。我怀疑您尝试在对等进程的 REPL 中运行 REPL 命令,而您链接到的教程希望您在客户端进程的 REPL 中运行命令。
为什么同行和客户之间不一致?由于不是 Datomic 团队的一员,我只能推测:
d/transact(我相信它会产生从客户端到服务器的额外 I/O 往返),作者为事务请求中的附加数据留出了空间(例如用于模板),因此更具可扩展性的基于地图的格式。| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |