id}) do json conn, Repo.get(User, id) end 匹配良好,但使用 :符号与模式不匹-6ren">
gpt4 book ai didi

elixir - => 和 : in an Elixir map? 有什么区别

转载 作者:行者123 更新时间:2023-12-02 06:47:58 26 4
gpt4 key购买 nike

在 Phoenix 框架中

def show(conn, %{"id" => id}) do
json conn, Repo.get(User, id)
end

匹配良好,但使用 :符号与模式不匹配
def show(conn, %{"id": id}) do
json conn, Repo.get(User, id)
end

当我从测试中调用以下代码时
conn
|> get(user_path(conn, :show, user.id))
|> json_response(200)

最佳答案

%{key: value}Atom 的简写键,而不是 String键。 让我们澄清一些事情:

:"a" == "a"
# => false

:"a" == :a
# => true

%{:a => 1} == %{"a": 1}
# => true

所以当你写 %{"id": id} ,意思是: %{id: id}这是 不是 %{"id" => id} ,并且由于您的参数映射没有 :id关键,它不匹配。

作为旁注,我实际上写了一个 Plug在 Phoenix Controller 中使用原子键来保持参数匹配简短。

关于elixir - => 和 : in an Elixir map? 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53025466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com