Ezért írok egy gyors aszinkron felhasználónév-ellenőrzést, és a PhoenixFrameworks webhelyen található oktatóanyagot követve meg tudom csinálni a következőképpen:
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
De ez számomra nem teljesen értelmes, mivel soha nem foglalkoztam funkcionális programozási nyelvvel, és tudom, hogy az elixírben a =
-vel való adatkötés másképp működik. De az én fejemben úgy érzem, hogy meg kellene fordítani:
def validateUsername(conn, %{user => "username"})
Vagy valami ilyesmi, így a fő kérdésem
Hogyan tölti fel a %{"username" => user})
a user
változót a releváns információkkal?