【问题标题】:Clojure - Append Collection is not workingClojure - 追加收集不起作用
【发布时间】:2018-11-06 04:41:09
【问题描述】:

我有上传图片的功能。有一个图片库,我需要在添加新照片时更新图库。照片上传成功,但是 UI 没有更新为新添加的照片。

我正在使用 entitydb 在本地存储列表。

我的控制器方法如下:

:post-art (pipeline! [value app-db] 
                  (when value
                    (pipeline! [value app-db]
                      (post-art-photo app-db value)
                      (let [res (:createArtPicture value)]
                        (pp/commit! (edb/append-collection app-db :artPicture :list [(assoc res :art {:id (:artId res)})])) 
                        (pp/commit! (assoc-in app-db [:kv :art-pictures-list] (edb/get-collection app-db :artPicture :list)))
                        (pp/commit! (assoc-in app-db [:kv :temp-photo] nil))
                        (navigate-go! {:key "art-single" :id (:artId res)}))
                      (rescue! [error]
                        nil))))

entitydb 架构是:

(def edb-schema
  {:art         {:id        :id
                 :relations {:photos     [:many :asset]
                             :authors    [:many :author]
                             :campus     [:one :campus]
                             :thumbnail  [:one :asset]
                             :categories [:many :artCategory]}}
   :author      {:id        :id 
                 :relations {:avatar [:one :asset]
                             :arts   [:many :art]}}
   :campus      {:id        :id
                 :relations {:arts  [:many :art]
                             :photo [:one :asset]}}
   :artCategory {:id        :id
                 :relations {:icon [:one :asset]
                             :arts [:many :art]}}
   :artList     {:id        :id
                 :relations {:user [:one :user]
                             :state [:many :art]}}
   :artPicture {:id        :id
                :relations {:user [:one :user]
                            :art [:one :art]}
                :middleware {:set [(fn [a]
                                      (assoc a :art {:id (:artId a)}))]}}
   :comment     {:id        :id
                 :relations {:user [:one :user]
                             :art [:one :art]}
                 :middleware {:set [(fn [a]
                                       (assoc a :art {:id (:artId a)}))]}}
   :favorite    {:id        :id
                 :relations {:user [:one :user]}}
   :game        {:id        :id
                 :relations {:user [:one :user]}}
   :user        {:id        :id
                 :relations {:artLists    [:many :artList]
                             :artPictures [:many :artPicture]
                             :comments    [:many :comment]
                             :favorites   [:many :favorite]
                             :games       [:many :game]}}
   :asset       {:id :id}})

问题在于“artPicture”。 “评论”也具有相同的功能。但是,这工作正常。有人帮忙吗?

【问题讨论】:

    标签: react-native clojurescript cljsrn


    【解决方案1】:

    最后,我找到了解决方案。我已将代码包装在“管道![value app-db]”中,并且有效!

    :post-art-picture (pipeline! [value app-db] 
                        (when value
                          (pipeline! [value app-db]
                            (post-art-photo app-db value)
                            (let [res (:createArtPicture value)]
                              (pipeline! [value app-db]
                                (pp/commit! (edb/append-collection app-db :artPicture :list [(assoc res :art {:id (:artId res)})])) 
                                (pp/commit! (assoc-in app-db [:kv :temp-photo] nil))
                                (navigate-replace! (-> (util/current-route (get-in app-db [:route]))
                                              (dissoc :subpage)
                                              (assoc :subpage "completed")))
                                (rescue! [error]
                                (util/log "Photo Upload ERROR:" error)))))))
    

    【讨论】:

      猜你喜欢
      • 2011-11-10
      • 2014-04-15
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      • 2010-11-03
      • 2016-09-02
      相关资源
      最近更新 更多