我如何访问elixir中的地图内的数据

时间:2017-07-21 10:28:46

标签: elixir phoenix-framework elixir-framework phoenix-channels

我有使用凤凰框架编写的简单聊天应用程序。

我想访问套接字中的一些数据

这是我正在使用的方法

def join("room:" <> _user, _, socket) do
    IO.inspect socket
    send self(), :after_join
    {:ok, socket}
  end

它将提供包含所有细节的精美地图。 使用此方法获取所有房间(主题:“room:Testuser”)的最佳方法是什么

这是在控制台中显示的示例结果

[info] JOIN room:Testuser to PhoenixChat.RoomChannel
  Transport:  Phoenix.Transports.WebSocket
  Parameters: %{}
%Phoenix.Socket{assigns: %{user: "Testuser"}, channel: PhoenixChat.RoomChannel,
 channel_pid: #PID<0.409.0>, endpoint: PhoenixChat.Endpoint,
 handler: PhoenixChat.UserSocket, id: nil, joined: false,
 pubsub_server: PhoenixChat.PubSub, ref: nil,
 serializer: Phoenix.Transports.WebSocketSerializer, topic: "room:Testuser",
 transport: Phoenix.Transports.WebSocket, transport_name: :websocket,
 transport_pid: #PID<0.375.0>}
[info] Replied room:Testuser :ok

1 个答案:

答案 0 :(得分:1)

你正在修补的thing不是每个人说的地图。这就是我们通常所说的struct! Struct是一个定义明确的字段的地图(类似于您可能从其他语言中了解到的对象)。

正如您在检查时发现的那样,您可以阅读所有键值对。

如果要访问结构的字段,可以说struct.field。有关更多信息,请阅读Elixir网站上的教程。