问题标签 [datascript]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
515 浏览

clojure - 为什么这个数据日志查询会聚合?

来自 https://github.com/tonsky/datascript

所以,这不是关于它在做什么的问题,而是关于它如何(或至少为什么)这样做的问题。max 和 min 是分别返回其后续整数的最大值或最小值的函数。如何?amount考虑限制聚合计数?为什么这些东西总是聚集在一起?代码如何运行以使其聚合。我真的不明白这段代码是如何产生结果的。

0 投票
1 回答
97 浏览

clojurescript - 为什么此查询不返回任何结果?

鉴于数据脚本数据库的这些定义,

如果我运行这个 devcard,我不会得到任何结果:

为什么此查询不返回任何结果?

0 投票
2 回答
517 浏览

clojure - 如何构造一个与 DataScript 中的引用向量完全匹配的查询?

设置考虑以下电影和演员的 DataScript 数据库,数据从learndatalogtoday.org 窃取:以下代码可以在 JVM/Clojure REPL 或 ClojureScript REPL 中执行,只要project.clj包含[datascript "0.15.0"]作为依赖项。

描述简而言之,该数据库中有两种实体——电影和演员(不区分性别的词)和三种 datom:

  • 电影实体:(:film/name唯一的字符串)
  • 电影实体:(:film/cast多个参考)
  • 演员实体:(:actor/name唯一字符串)

问题我想构建一个查询,询问:哪些电影有这些N演员,并且只有这些N演员作为唯一的明星出现,对于 N>=2?

例如,《机械战警》由南希·艾伦、彼得·韦勒、罗尼·考克斯主演,但没有一部电影只由前两位主演,艾伦和韦勒。因此,我希望以下查询产生空集:

然而,这个查询是有缺陷的,因为我不知道如何表达任何匹配都应该排除任何不是 Allen 或 Weller 的演员——再次,我想找到只有 Allen 和 Weller 合作过而没有任何其他演员的电影,所以我想调整上述查询以生成空集。如何调整此查询以强制执行此要求?

0 投票
1 回答
278 浏览

clojure - 慢速 Datascript 查询

我正在使用 Datascript 查询具有给定名称的 2 个节点的最后一个共同祖先的树结构,就是我到目前为止所得到的,但它真的很慢 - 知道为什么(或者有更好的方法)吗?

我最初打算用来not排除所有比最后一个常见的祖先更高的祖先,但 Datascript 目前不支持not因此两个父子句。

架构是:

0 投票
1 回答
880 浏览

clojure - Datomic 的 tempid 是否提供唯一的实体 ID?

datomic.api/tempid我对提供实体 ID 的 fn有一些疑问。

它产生了一些long价值,而不是UUID String64long位,这让我在某个点可能达到 long 的极限后思考它的独特性。相反,它会更难UUID

当我写一些这样的代码时,我问自己“这是否达到了实体 id 限制并在添加新实体时导致问题?”

0 投票
2 回答
174 浏览

html - 如何通过 Clojure Datascript 填充和显示列表?

我的数据库已经满了

但告诉我这个错误:

未捕获的错误:断言失败:(conn?conn)在 Function.datascript.core.transact_BANG_.cljs$core$IFn$_invoke$arity$3

此外,我想像这样显示数据库的结果:

但不起作用:(

谢谢!

0 投票
1 回答
316 浏览

datomic - Datomic - 获取与任意查询相关的所有 datom

给定数据库 d 上的任意 datomic 查询 q,是否有可能从 q 派生一个查询 x,当对 d 运行时将返回在 d 上产生 q 的结果所需的所有相关数据 r?q 对 d 的结果应该等于 q 对 r 的结果。

我正在尝试将 datomic 与 datascript 客户端同步。我事先知道所有查询,并且我想在 datascript 中创建我的 datomic 数据库的一个子集,限制为与客户端查询相关的数据。为简单起见,假设没有参数化查询,尽管 Id 期望使用占位符,对于任意查询输入参数可能会达到相同的效果,并且允许它们的解决方案将是首选。

我知道我可以通过修改它并针对数据库运行它来获取查询返回的所有实体 id,然后触摸所有这些实体,但我希望有更有效的方法,只返回与 a 相关的实体基准的子集查询,并且可以从查询 q ALONE 派生,而不必先在 d 上运行 q。

谢谢。

0 投票
2 回答
657 浏览

clojure - 原子中的一对多关系

假设我有一个看起来像这样的数据 -

我想按姓名查找作者以及他们博客的所有标题和博客数。到目前为止,我有

我只能获得博客的总数。如何仅使用数据日志查询来获取博客的标题?我也不能在博客实体上拥有 belongs_to 关系。

更新

“作者/博客”的架构如下所示:

0 投票
1 回答
48 浏览

clojurescript - 如何编写查询以使具有基数的键的结果/许多是映射而不是datascript中的向量

假设一个数据脚本数据库有一个模式:

并插入了一些实体:

然后查询

会得到结果:

:maker/cars一个向量。

如何编写拉取查询以获得如下结果?

试过但没有运气...

0 投票
1 回答
201 浏览

clojure - DataScript / datahike 规则不返回任何内容

我尝试在datahike的数据库的多个字段中搜索字符串。到目前为止没有成功。到目前为止,这是我最大的努力方法:

预期结果:2

实际结果:0

就我而言,解决方案不需要使用规则。如果在多个字段中的至少一个中找到一个字符串,它应该只返回一个匹配项。

我在用着[io.replikativ/datahike "0.1.1"]