Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在phoenix elixir框架中访问map内部的值_Elixir_Phoenix Framework - Fatal编程技术网

如何在phoenix elixir框架中访问map内部的值

如何在phoenix elixir框架中访问map内部的值,elixir,phoenix-framework,Elixir,Phoenix Framework,我有message=%{“to”=>“testuser”,“value”=>“asdads”}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", "

我有
message=%{“to”=>“testuser”,“value”=>“asdads”}
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>}
[error]GenServer#PID终止
**(KeyError)键:在以下位置找不到:%%{“to”=>“testuser”,“value”=>“aadadad”}
(phoenix_chat)web/channels/room_channel.ex:31:PhoenixChat.RoomChannel.handle_in/3
(phoenix)lib/phoenix/channel/server.ex:225:phoenix.channel.server.handle_info/2中的匿名fn/4
(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
最后一条消息:%Phoenix.Socket.message{event:“message:new”,负载:%{“to”=>“testuser”,“value”=>“aadadad”},参考:“4”,主题:“room:Pamidu”}
状态:%Phoenix.Socket{assignments:%%{user:“Pamidu”},通道:PhoenixChat.RoomChannel,通道:PhoenixChat.pid:#pid,端点:PhoenixChat.endpoint,处理程序:PhoenixChat.UserSocket,id:nil,joined:true,pubsub\u服务器:PhoenixChat.pubsub,ref:nil,序列化程序:PhoenixChat.Transports.WebSocketSerializer,主题:“房间:Pamidu”,传输:Phoenix.Transports.WebSocket,传输名称::WebSocket,传输pid:#pid}

地图的关键点是字符串,而不是原子。您发布的所有三个代码段都将访问键
:to
(atom),而不是
“to”
(string)


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

您可以执行以下操作

case Map.fetch(message,"to") do
   {:ok, value} -> IO.inspect value;           #Success  
   :error       -> IO.inspect "Key Not found"  #Error
end

message[“to”]
?声明中还包括
按摩
消息