J'étudie Elixir/Phoenix et il y a une tâche devant moi. J'ai besoin de filtrer les résultats de la base de données dans un cycle. Quelque chose comme ceci:Comment ajouter un article à la liste en cycle dans Elixir/Phoenix
user = Repo.get_by(User, api_token: token)
rooms = Repo.all(Room)
result = []
if !Enum.empty?(rooms) do
Enum.each rooms, fn room ->
users = Poison.decode!(room.users)
if Enum.member?(users, user.id) do
result = result ++ [room]
end
end
end
json(conn, %{"rooms" => result})
Mais ce cas ne me permet pas d'ajouter des éléments à la liste, pourquoi? Parce que c'est un langage fonctionnel ... Y at-il un moyen d'ajouter des éléments à la liste dans un cycle? Oh oui, peut-être que vous me demandez "Pourquoi vous ne recevez pas d'objets de la base de données par ID utilisateur?" Je vais dire que le magasin room.users codé en chaîne json
Merci. C'est du travail, mais y a-t-il vraiment un moyen de le filtrer dans un cycle? Il me semble que cela ne marchera pas dans tous les cas –
Si vous voulez faire des changements arbitraires à une variable en parcourant une liste, vous pouvez utiliser 'Enum.reduce/3'. Voici certaines de mes réponses qui utilisent 'Enum.reduce/3': https://stackoverflow.com/search?tab=newest&q=user%3a320615%20%5belixir%5d%20Enum.reduce. – Dogbert