Ich erstelle einen einfachen Dienst, der eine E-Mail-Adresse - und findet den Benutzer - aus einer Liste von Benutzern.Get map nach Wert aus Liste in Elixir
Hier ist eine vereinfachte Version mit einer Liste von Benutzern. Ich möchte einen Benutzer anhand seiner E-Mail-Adresse extrahieren.
def endpoint do
[%{email: "[email protected]", account_type: "full"},
%{email: "[email protected]", account_type: "standard"},
%{email: "[email protected]", account_type: "full"}]
end
def get_by_email(user, email) do
user |> Map.get(:email)
end
def dev_endpoint(email) do
endpoint
|> Enum.map(&get_by_email(email)/1)
end
def show(conn, %{"id" => email}) do
response = dev_endpoint(email)
json(conn, %{"email" => response})
end
So im Wesentlichen:
dev_endpoint("[email protected]")
Sollte zurück:
%{email: "[email protected]", account_type: "full"}
Ich weiß, es ist etwas falsch mit meiner Capture-Syntax, aber ich habe verschiedene Iterationen versucht, mit kein Glück.
Vielleicht kann ich nicht ganz verstehen, was Sie wollen, ist aber nicht 'Endpunkt |> Enum.find (& (email == Map.get (& 1,: email))) 'ausreichend? – ymonad