"testuser", "value"=> "asdads"} map 。我需要访问此 map 内“to”键的值 message.to message[:t-6ren">
gpt4 book ai didi

elixir - 我如何访问phoenix Elixir框架中 map 内的值

转载 作者:行者123 更新时间:2023-12-02 09:01:52 25 4
gpt4 key购买 nike

我有 message = %{"to"=> "testuser", "value"=> "asdads"} map 。我需要访问此 map 内“to”键的值

message.to
message[:to]
Map.fetch!(message, to)

到目前为止没有任何效果

这是控制台错误消息

[error] GenServer #PID<0.395.0> terminating
** (KeyError) key :to not found in: %{"to" => "testuser", "value" => "aadadadad"}
(phoenix_chat) web/channels/room_channel.ex:31: PhoenixChat.RoomChannel.handle_in/3
(phoenix) lib/phoenix/channel/server.ex:225: anonymous fn/4 in Phoenix.Channel.Server.handle_info/2
(stdlib) gen_server.erl:601: :gen_server.try_dispatch/4
(stdlib) gen_server.erl:667: :gen_server.handle_msg/5
(stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: %Phoenix.Socket.Message{event: "message:new", payload: %{"to" => "testuser", "value" => "aadadadad"}, ref: "4", topic: "room:Pamidu"}
State: %Phoenix.Socket{assigns: %{user: "Pamidu"}, channel: PhoenixChat.RoomChannel, channel_pid: #PID<0.395.0>, endpoint: PhoenixChat.Endpoint, handler: PhoenixChat.UserSocket, id: nil, joined: true, pubsub_server: PhoenixChat.PubSub, ref: nil, serializer: Phoenix.Transports.WebSocketSerializer, topic: "room:Pamidu", transport: Phoenix.Transports.WebSocket, transport_name: :websocket, transport_pid: #PID<0.384.0>}

最佳答案

你的 map 的键是字符串,而不是原子。您发布的所有三个代码片段都将访问 key :to (原子),而不是 "to" (字符串)。

您可以执行 message["to"] 来访问该值。如果您想在值不存在时引发错误,也可以执行 Map.fetch!(message, "to")

关于elixir - 我如何访问phoenix Elixir框架中 map 内的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45345999/

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