experimentix
Hello
I’m new to elixir and i’m struggling with this problem
I’ve a map lets call it order and that has several products
I want to loop through this products map inside the order map and append some info from another map called associated products
it looks like this
orders map
%{
"_csrf_token" => "gwsgw",
"custom_tags" => "",
"id" => "62212",
"products" => %{
"123456" => %{
"category" => "3",
"tag" => ["hero", "superstar"],
"title" => "Product title"
},
"234567" => %{"category" => "5", "title" => "Product title"},
"345678" => %{
"category" => "8",
"tag" => ["creation", "dynasty"],
"title" => "Product title"
},
"456789" => %{
"category" => "5",
"title" => "Product title"
},
},
"order_id" => "193885",
"custom_message" => "Nothing to declare",
"tags_title" => %{"tag" => ["preview"]},
"allcats" => "5"
}
associated products map
%{
"123456" => [
%{
"id" => "4984944",
"has_stock" => false,
"name" => "Other product Name",
"product_id" => "123456",
},
%{
"id" => "3511064",
"has_stock" => true,
"name" => "Other product Name",
"product_id" => "123456",
}
],
"234567" => [
%{
"id" => "3511075",
"has_stock" => true,
"name" => "Other product Name",
"product_id" => "234567",
},
%{
"id" => "3511076",
"has_stock" => false,
"name" => "Other product Name",
"product_id" => "234567",
}
],
"345678" => [
%{
"id" => "3511082",
"has_stock" => true,
"name" => "Other product Name",
"product_id" => "345678",
},
%{
"id" => "3511083",
"has_stock" => false,
"name" => "Other product Name",
"product_id" => "345678",
}
]
}
i tried this code to put the associated products but it only gets updated with the last item, i assume its because it doesn’t update the order in every loop
order = for {pid, v} <- order["products"] do
IO.inspect pid
IO.inspect v
order = put_in(order, ["products", pid,"associated_products"], associated_products[pid])
end
How can i achieve this result??
%{
"_csrf_token" => "gwsgw",
"custom_tags" => "",
"id" => "62212",
"products" => %{
"123456" => %{
"category" => "3",
"tag" => ["hero", "superstar"],
"title" => "Product title",
"associated_products" => [
%{
"id" => "4984944",
"has_stock" => false,
"name" => "Other product Name",
"product_id" => "123456",
},
%{
"id" => "3511064",
"has_stock" => true,
"name" => "Other product Name",
"product_id" => "123456",
}
]
},
"234567" => %{"category" => "5",
"title" => "Product title",
"associated_products" => [
%{
"id" => "4984944",
"has_stock" => false,
"name" => "Other product Name",
"product_id" => "234567",
},
%{
"id" => "3511064",
"has_stock" => true,
"name" => "Other product Name",
"product_id" => "234567",
}
]
},
"345678" => %{
"category" => "8",
"tag" => ["creation", "dynasty"],
"title" => "Product title",
"associated_products" => [
%{
"id" => "4984944",
"has_stock" => false,
"name" => "Other product Name",
"product_id" => "345678",
},
%{
"id" => "3511064",
"has_stock" => true,
"name" => "Other product Name",
"product_id" => "345678",
}
]
},
"456789" => %{
"category" => "5",
"title" => "Product title",
"associated_products" => [
%{
"id" => "4984944",
"has_stock" => false,
"name" => "Other product Name",
"product_id" => "456789",
},
%{
"id" => "3511064",
"has_stock" => true,
"name" => "Other product Name",
"product_id" => "456789",
}
]
},
},
"order_id" => "193885",
"custom_message" => "Nothing to declare",
"tags_title" => %{"tag" => ["preview"]},
"allcats" => "5"
}
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m working on a small exercise involving update_in/3, and I came up with this solution:
data = %{
name: "Periodic Table",
category:...
New
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication):
toke...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex










Showing Posts 1 to 5- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
stefanluptak
Check this gist: update_map_in_loop.md · GitHub
It’s a Livebook, so you can copy and paste it into your Livebook server and play with it.
If you need more explanation, I can provide it. I am pretty sure there are more elegant ways to achieve this, but this should be good enough as a start.
The problem with your solution is that it’s not “reducing” the order (keeping the changes for all iterations), just returning the list of modified orders. Each order (item of the returned list) is the order modified but just for a single product.
Hope this helps a bit.
experimentix
Thank you very much, it worked. And thanks for small explanation.
I think i understand how things work now looking at your code.
Once again thanks
experimentix
Since my associated products has the key same as the product key i ended with removing some of your code and referencing it like this
Once again thanks
ConstantBall
This will give a value of
nilto"associated_products"if theproduct_iddoesn’t exist in theassociated_productsmap. Is that the behaviour you want? Are you looking to set another default value if that’s the case? Or do you only want to insert"associated_products"intoorder["products"][product_id]ifassociated_products[product_id]exists?experimentix
That is the behavior i want as associated product is always present.