Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 使用对账器在Om Next中测试查询_Clojure_Clojurescript_Om - Fatal编程技术网

Clojure 使用对账器在Om Next中测试查询

Clojure 使用对账器在Om Next中测试查询,clojure,clojurescript,om,Clojure,Clojurescript,Om,我确信我已经读过somwhere,它是如何使用对账器直接在Om Next中测试查询表达式的,但我无法再次找到源代码,也无法根据Om文档确定这是否可行。这是否可能做到,如果可能,如何做到 我现在要测试的是使用解析器,但我希望有一种更好的方法使用协调器: (parser {:state (atom state)} (om/get-query MyQuery)) 这就是我目前如何找到顶级关键字的值: (defn query [kw] (let [res (my-parser {:state my

我确信我已经读过somwhere,它是如何使用对账器直接在Om Next中测试查询表达式的,但我无法再次找到源代码,也无法根据Om文档确定这是否可行。这是否可能做到,如果可能,如何做到

我现在要测试的是使用解析器,但我希望有一种更好的方法使用协调器:

(parser {:state (atom state)} (om/get-query MyQuery))

这就是我目前如何找到顶级关键字的值:

(defn query [kw]
  (let [res (my-parser {:state my-reconciler} `[[~kw _]])]
  (when (not-empty res) (apply val res))))
因此,在您的情况下,您可以尝试:

(my-parser {:state my-reconciler} (om/get-query MyQuery))

它看起来像是
:state
的值可以是您在示例中给出的状态,也可以是我的示例中的对账器本身。

这取决于您所说的“直接在Om中测试查询表达式”是什么意思?上面编写的代码是检查解析器将如何解释您给出的查询的唯一方法


如果您想了解如何使用您提供的查询对应用程序状态进行规范化和非规范化,那么可能ident和
om/tree->db
的文档更接近您要查找的内容。

没有什么可以阻止您将对账器放在环境中的
:state
键上,但是你没有什么理由想这么做。state键用于指向对账器中包含的
:state
,以便您可以读取/更改UI代码外部的状态。我想从UI代码外部(组件外部)查询对账器内部的状态。这是一件有用的事情,也是为什么存在
{:state my reconciler}
选项的原因。提问者想要“使用对账器”,意思是查询任何时间点的实际状态——对账器内的真实状态。所以我只是简单地回答了这个问题。我觉得我们在说同样的话,如果我误解了,我向你道歉。我不太清楚询问者的意思,因为他似乎根本不想使用解析器。在任何情况下,整个协调器都有更多的信息(解析器、索引器、发送函数等),因此说一些类似于
{:state@my reconciler}
的话就可以得到所需的信息,而不需要所有额外的东西