So I have this:
({:company_profile_id ["2"], :topic :company, :url ["mikeshawauto.com"]})
And then I get this field name and value:
(:company_profile_id)
(["2"])
The next 3 lines of code are:
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)
And when the function is next called, I end up with :
({:company_profile_id ["2"], :topic :company, :url ["mikeshawauto.com"]})
I need:
({:company_profile_id ["2", "2"], :topic :company, :url
["mikeshawauto.com"]})
So perhaps I've misunderstood what (into) is for? How do I add another the
values of these 2 vectors together?
On Wednesday, October 11, 2017 at 12:20:55 PM UTC-4, [email protected]
wrote:
>
> 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, [email protected]
> 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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.