首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的查询不能传递给我的阅读器?

为什么我的查询不能传递给我的阅读器?
EN

Stack Overflow用户
提问于 2016-12-22 15:37:20
回答 1查看 48关注 0票数 0

问题

我的网页只有以下代码的输出:{:user {}}

代码语言:javascript
运行
复制
(ns omn1.core
  (:require
   [om.next :as om :refer-macros [defui]]
   [om.dom :as dom :refer [div]]
   [goog.dom :as gdom]))

(defui MyComponent
  static om/IQuery
  (query [this] [:user])
  Object
  (render
   [this]
   (let [data (om/props this)]
     (div nil (str data)))))

(def app-state (atom {:user {:name "Fenton"}}))

(defn reader [{q :query st :state} _ _]
  (.log js/console (str "q: " q))
  {:value (om/db->tree q @app-state @app-state)})

(def parser (om/parser {:read reader}))

(def reconciler
  (om/reconciler
   {:state app-state
    :parser parser}))

(om/add-root! reconciler MyComponent (gdom/getElement "app"))

当我检查浏览器控制台时,我注意到我的查询是空的。为什么不把它传递给我的阅读器函数呢?

这来自于一个动机,使我的代码尽可能保持最小的LOC #,也是干的。因此,我希望有一个读取功能,将与适当设置的数据库,和正常的名义查询。如果您将常规查询传递给om/db->treedb->tree确实可以做到这一点。db->tree将接受任何适当的查询,并返回一个填充的数据树。也许另一种表达这个问题的方式是,有人可以演示一个这样做的阅读器功能吗?即利用db->tree来解析查询的值。我不想为每个查询都编写一个自定义的阅读器。如果我的所有查询都遵循常规查询语法,并且我的DB格式正确,那么我应该能够使用一个读取器函数,不是吗?

om.next快速入门-使用链接思考中提供的示例不起作用:

代码语言:javascript
运行
复制
(defmethod read :items
  [{:keys [query state]} k _]
  (let [st @state]
    {:value (om/db->tree query (get st k) st)}))

如前所述,query有时是nil的,第二个和第三个参数不同于测试中提出的如何使用这个函数,所有测试都使用:st作为第二和第三个参数。迷惑了。

EN

回答 1

Stack Overflow用户

发布于 2016-12-23 00:41:19

来自Om.Next快速入门教程(https://github.com/omcljs/om/wiki/Quick-Start-(om.next)read具有以下签名:

代码语言:javascript
运行
复制
[{:keys [state] :as env} key params]

因此不能访问查询数据结构。

通常,设置是为每个查询使用一个多方法,并使用查询的参数返回状态的某一部分:

代码语言:javascript
运行
复制
(defmulti read (fn [env key params] key))

(defmethod read :animals/list
  [{:keys [state] :as env} key {:keys [start end]}]
  {:value (subvec (:animals/list @state) start end)})

这里的:animals/list是查询的key。这就是访问查询的keyparams的方法。

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

https://stackoverflow.com/questions/41277982

复制
相关文章

相似问题

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