我希望能夠通過phoenix presence中的:meta
地圖將用戶元數據傳遞到JavaScript端來訪問它。更具體地說,我希望能夠推送圖像文件路徑(字符串),並讓它們與我在場列表中的每個用戶相關聯。該文檔提供了這個例子重寫讀取/ 2功能,用戶模型數據添加到:meta
地圖:phoenix presence fetch/2 override
def fetch(_topic, entries) do
query =
from u in User,
where: u.id in ^Map.keys(entries),
select: {u.id, u}
users = query |> Repo.all |> Enum.into(%{})
for {key, %{metas: metas}} <- entries, into: %{} do
{key, %{metas: metas, user: users[key]}}
end
end
然而,當我爲我的用戶模型進行相應的修改,我得到關於可變誤差u和from/2功能以及cannot use ^Map.keys(entries) outside of match clauses
。
我去找人試圖做類似的事情的例子,無法找到任何類似於我在這裏嘗試的github上的任何東西。
任何人都有任何想法如何我可以去重組fetch/2函數,以便它能正常工作?我有一個基本的用戶模型,包含3個字段,電子郵件,密碼和圖標/頭像圖像。
嘗試'require Ecto.Query'在文件的頂部。當我沒有要求文件時,你的錯誤是典型的。還要確保你已經導入了'Ecto.Query' –
編輯:naw,這並沒有改變錯誤代碼。我仍然得到'警告:變量「u」不存在,並且正在擴展爲「u()」,請使用括號刪除歧義或將變量名稱更改爲主警告,如果我手動輸入甚至在需要Ecto.Query和我的用戶模型之後,進入repl。 – Abeltensor
'from'是一個Ecto.Query宏。您不必在控制器和模型中執行此操作,因爲在您使用MyApp.Web,控制器時,它已經在web.ex中設置了。 –