So eine schnelle async Benutzernamen Validierungsprüfung Ich schreibe, und im Anschluss an das Tutorial auf PhoenixFrameworks Website, kann ich es tun wie so:Wie Bindung der Parameter in PhoenixFramework (Elixir) arbeiten
def validateUsername(conn, %{"username" => user}) do
IO.inspect(conn)
query = from u in User,
where: u.username == ^user,
select: [u.username]
case Repo.all(query) do
[[username]] ->
conn
|> json(%{ success: false, error: "Username has been taken" })
[] ->
conn
|> json(%{ success: true })
nil ->
conn
|> json(%{ success: true })
_ ->
conn
|> json(%{ success: false, error: "Internal Server Error"})
end
Aber diese macht für mich keinen Sinn, da ich mich nie mit einer funktionalen Programmiersprache beschäftigt habe, und ich weiß, dass die Datenbindung mit =
im Elixier anders funktioniert. Aber in meinem Kopf fühle ich mich wie es wie rückgängig gemacht werden soll:
def validateUsername(conn, %{user => "username"})
Oder so ähnlich, so meine Hauptfrage ist
Wie funktioniert die %{"username" => user})
die user
Variable mit den relevanten Informationen füllen?
Pattern Matching enthält, ist auf der funktionalen Programmierung nicht inhärent. Es ist nur ein prominentes Merkmal in vielen FP-Sprachimplementierungen. –