在函数中包装 Datascript 查询?

Wrapping Datascript query in a function?

Datascript 出现看似奇怪的问题。出于某种原因,当我 运行 这个查询没有被包装在一个函数中时,一切正常。但是一旦我将它包装在一个函数中,它就会 returns 数据库中每个实体的 :block/content 的值。我很困惑,因为我过去没有遇到包装其他 Datascript 查询的任何问题。有没有比我更有经验的人看到任何问题?

;; Works fine and returns the correct value
(ds/q '[:find ?block-text
        :where
        [?id :block/id "l_63xa4m1"]
        [?id :block/content ?block-text]]
      @conn)

;; Returns every value for `:block/content` in the db
(defn content-find
  [id-passed]
  (ds/q '[:find ?block-text
          :where
          [?id :block/id ?id-passed]
          [?id :block/content ?block-text]]
        @conn))
(content-find "l_63xa4m1")

编辑: 解决了 here

在您的 defn 版本中,您使用的是查询子句 [?id :block/id ?id-passed]。这实际上并没有使用您传递给函数的 id-passed 参数。

我不确定如何正确传递参数。我相信有一个 :in 条款左右?