Using conj instead of into, for no particular reason, except debugging. The 
document is slowly built-up: 

({:company_profile_id [["2"]], :topic :company, :url 
[["mikeshawauto.com"]]})

({:company_profile_id [["2"]], :topic :company, :url 
[["mikeshawauto.com"]]})

({:company_profile_id [["2"]], :topic :company, :url 
[["mikeshawauto.com"]], :reference_id [["331089191"]]})

In the transition from row 1 to row 2, I assume the field being added is 
company_profile_id. Why is there no change? Why isn't a new value added to 
the vector? I must be missing something obvious. 







On Wednesday, October 11, 2017 at 11:44:40 AM UTC-4, lawrence...@gmail.com 
wrote:
>
> I seem unable to figure out where I made a mistake, though this should be 
> simple.
>
> I have two SQL calls that bring back 5 fields:
>
>  SELECT company_profile_id ,  reference_id,  reference_source   FROM   
> company_reference_id    limit 1  ;
>
> +--------------------+--------------+------------------+
> | company_profile_id | reference_id | reference_source |
> +--------------------+--------------+------------------+
> |                  2 | 331089191    | EIN              |
> +--------------------+--------------+------------------+
>
>  SELECT company_profile_id, url    FROM company_website             limit 
> 1   ;
>
> +--------------------+------------------+
> | company_profile_id | url              |
> +--------------------+------------------+
> |                  2 | mikeshawauto.com |
> +--------------------+------------------+
>
> This brings back a total of 5 values. I need to have a document that has 5 
> values, though if values have the same field-name, then I want to 
> consolidate them into one vector. There are 4 unique field names, so I 
> expect to end up with 4 vectors, holding 5 values. Instead, I get this: 
>
> ({:company_profile_id ["2"], :topic :company, 
> :how-many-rows-and-fields-from-database 13, :url ["mikeshawauto.com"], 
> :reference_id ["331089191"], :reference_source ["ein"]})
>
> I expect: 
>
> {:company_profile_id ["2" "2"]
>
> but I get: 
>
> {:company_profile_id ["2"]
>
> The documents are combined in a map in an atom, with this function: 
>
>
> (def documents (atom {}))
>
>
> (defn update-documents
>   [denormalized-id field-name field-value 
> how-many-rows-and-fields-from-database topic]
>   {:pre [
>          (not (nil? denormalized-id))
>          (not (nil? field-name))
>          (vector? field-value)
>          ]}
>   (swap! documents
>          (fn [old-documents]
>            (slingshot/try+
>             (let [
>                   document (get old-documents denormalized-id {})
>                   old-field-value (get old-documents field-name [])
>                   new-field-value (into old-field-value field-value)
>                   document (assoc document field-name new-field-value)
>
>                   previous-how-many-rows-and-fields-from-database (get 
> document :how-many-rows-and-fields-from-database 0)
>                   new-how-many-rows-and-fields-from-database (+ 
> previous-how-many-rows-and-fields-from-database 
> how-many-rows-and-fields-from-database)
>                   document (assoc document :topic topic)
>                   document (assoc document 
> :how-many-rows-and-fields-from-database 
> new-how-many-rows-and-fields-from-database)
>                   new-documents (assoc old-documents denormalized-id 
> document)
>                   ]
>               new-documents)
>             (catch Object o
>               (errors/log o) 
>               (slingshot/throw+ {
>                                  :type ::update-documents
>                                  :error o
>                                  }
>                                 ))))))
>
> Can I assume that this always gives me 2 values in a vector? 
>
>                   old-field-value (get old-documents field-name [])
>                   new-field-value (into old-field-value field-value)
>                   document (assoc document field-name new-field-value)
>
> I'm going to guess that the bug is somewhere else in my code. But if 
> anyone sees a flaw in this function, I'd be grateful if you could point it 
> out to me. 
>
>
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to