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’m aware of 2 such projects, are there others?
git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
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
Hi everyone.
My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Hello folks!
So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
How Can I Optimise Compile Time Dependencies
I have been building an elixir application for about 2 years now. Many modules and files ha...
New
Hi,
we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
Other Trending Topics
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with.
But I don’t use it anymore.
Serverless was the promis...
New
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
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
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #performance










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.