:meta
맵을 통해 사용자 메타 데이터를 phoenix에 전달하여 JavaScript 측에서 액세스 할 수 있기를 원합니다. 더 구체적으로 말하면 이미지 파일 경로 (문자열)를 푸시하고 내 현재 목록의 각 사용자와 연결되도록 할 수 있습니다. 문서는이 :meta
지도에 사용자의 모델 데이터를 추가/2 기능을 가져 오버라이드 (override)이 예이다 : 오류 변수에 대한 내 사용자 모델에 대한 적절한 변경을 할 때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
그러나, 내가 할 유와 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 매크로입니다. 예를 들어'use MyApp.Web, : controller'을 사용하면 web.ex에 이미 설정되어 있기 때문에 컨트롤러와 모델에서이 작업을 수행 할 필요가 없습니다. –