Jeez, I have been looking into this for more than one day now, what I was 
missing was to update the :id-key option. Now I can pass my unique id and the 
changed value to the server.


Am Samstag, 26. April 2014 16:26:02 UTC+2 schrieb Sven Richter:
> Am Samstag, 26. April 2014 16:19:34 UTC+2 schrieb David Nolen:
> 
> > om-sync is little more than a basic proof of concept. Pull requests that 
> > enhance and/or extend the behavior are welcome.
> 
> 
> 
> Yea, I read that. However, the error is not within om-sync I guess. I did 
> your intermediate tutorial and there I was able to send the whole map to the 
> server. So I guess something is wrong on my side. Or maybe I miss something 
> from the tutorial that I additionally need.
> 
> 
> 
> Best Regards,
> 
> Sven
> 
> 
> 
> 
> 
> > 
> 
> > On Saturday, April 26, 2014, Sven Richter <[email protected]> wrote:
> 
> > 
> 
> > Hi,
> 
> > 
> 
> > 
> 
> > 
> 
> > I am trying to use om-sync to update my server when something in my app 
> > state changes. But, whenever I do that I only send one key of my whole map 
> > to the server, which is useless as some metainformation such as an unique 
> > id is missing.
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > I put together a small working example which shows exactly this problem. 
> > You can copy this into a file and after clicking a button you will see that 
> > the put request sends only a map with one key:
> 
> > 
> 
> > 
> 
> > 
> 
> > (ns om-async.core
> 
> > 
> 
> >   (:require-macros [cljs.core.async.macros :refer [go]])
> 
> > 
> 
> >   (:require [cljs.core.async :as async :refer [put! chan alts!]]
> 
> > 
> 
> >             [goog.dom :as gdom]
> 
> > 
> 
> >             [om.core :as om :include-macros true]
> 
> > 
> 
> >             [om.dom :as dom :include-macros true]
> 
> > 
> 
> >             [om-sync.core :refer [om-sync]]
> 
> > 
> 
> >             [om-sync.util :refer [tx-tag edn-xhr]]
> 
> > 
> 
> >             [cljs-time.core :as cljs-time]
> 
> > 
> 
> >             [cljs-time.format :as cljs-format]))
> 
> > 
> 
> > 
> 
> > 
> 
> > (def test-state (atom {:releases {:url "/releases" :coll [{:keyone 
> > "testvalue" :keytwo "testval2"} {:keyone "testvalmap2" :keytwo 
> > "tesval2map2"}]}}))
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > (defn test-view-deeper [app owner]
> 
> > 
> 
> >   (reify
> 
> > 
> 
> >     om/IRenderState
> 
> > 
> 
> >     (render-state [_ _]
> 
> > 
> 
> >                   (apply dom/div nil
> 
> > 
> 
> >                            (map #(dom/button
> 
> > 
> 
> >                               #js {:onClick (fn [e] (println "clicked 
> > button")
> 
> > 
> 
> >                                             (om/transact! % :keyone (fn [_] 
> > "newtestval") :update))}
> 
> > 
> 
> >                                        (:keyone %)) app)))))
> 
> > 
> 
> > 
> 
> > 
> 
> > (defn test-view [app owner]
> 
> > 
> 
> >   (reify
> 
> > 
> 
> >     om/IRenderState
> 
> > 
> 
> >     (render-state [_ _]
> 
> > 
> 
> >                   (dom/div nil
> 
> > 
> 
> >                         (om/build om-sync (:releases app)
> 
> > 
> 
> >                          {:opts {:view       test-view-deeper
> 
> > 
> 
> >                                  :filter     (comp #{:create :update 
> > :delete} tx-tag)
> 
> > 
> 
> >                                  :id-key     :class/id
> 
> > 
> 
> >                                  :on-success (fn [res tx-data] (println 
> > "success " res))
> 
> > 
> 
> >                                  :on-error
> 
> > 
> 
> >                                              (fn [err tx-data]
> 
> > 
> 
> >                                                (println "error "))}})))))
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > 
> 
> > (let [tx-chan (chan)
> 
> > 
> 
> >         tx-pub-chan (async/pub tx-chan (fn [_] :txs))]
> 
> > 
> 
> >     (om/root test-view test-state
> 
> > 
> 
> >              {:target    (gdom/getElement "test")
> 
> > 
> 
> >               :shared    {:tx-chan tx-pub-chan}
> 
> > 
> 
> >               :tx-listen (fn [tx-data root-cursor]
> 
> > 
> 
> >                            (put! tx-chan [tx-data root-cursor]))}))
> 
> > 
> 
> > 
> 
> > 
> 
> > The put request in chrome looks like this:
> 
> > 
> 
> > Request payload: {:keyone "newtestval"}
> 
> > 
> 
> > 
> 
> > 
> 
> > Any Ideas what is wrong here? And how to do it right?
> 
> > 
> 
> > 
> 
> > 
> 
> > Best Regards,
> 
> > 
> 
> > Sven
> 
> > 
> 
> > 
> 
> > 
> 
> > --
> 
> > 
> 
> > Note that posts from new members are moderated - please be patient with 
> > your first post.
> 
> > 
> 
> > ---
> 
> > 
> 
> > You received this message because you are subscribed to the Google Groups 
> > "ClojureScript" group.
> 
> > 
> 
> > To unsubscribe from this group and stop receiving emails from it, send an 
> > email to [email protected].
> 
> > 
> 
> > 
> 
> > To post to this group, send email to [email protected].
> 
> > 
> 
> > Visit this group at http://groups.google.com/group/clojurescript.

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to