Ich studiere Elixier/Phoenix und es gibt eine Aufgabe vor mir. Ich muss Ergebnisse von der Datenbank in einem Zyklus filtern. Etwas wie folgt aus:Wie man einen Gegenstand hinzufügt, um ihn in einem Zyklus in Elixir/Phoenix zu markieren
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})
Aber dieser Fall nicht gestatten Sie mir Artikel anhängen aufzulisten, warum? Weil dies eine funktionale Sprache ist ... Gibt es eine Möglichkeit, Elemente anzuhängen, die in einem Zyklus aufgelistet werden sollen?
Oh yeah, vielleicht fragst du mich "Warum bekommst du einfach keine Objekte aus der Datenbank nach Benutzer-ID?" Ich werde sagen, dass die room.users JSON-Array in Zeichenfolge codiert
Dank. Es ist Arbeit, aber gibt es wirklich einen Weg, wie man es in einem Zyklus filtert? Es scheint mir, dass dies nicht in allen Fällen funktionieren wird. –
Wenn Sie eine Variable während des Durchlaufens einer Liste beliebig verändern wollen, können Sie 'Enum.reduce/3' verwenden. Hier sind einige meiner Antworten, die 'Enum.reduce/3' verwenden: https://stackoverflow.com/search?tab=newest&q=user%3a320615%20%5belixir%5d%20Enum.reduce. – Dogbert