:meta
マップを使ってユーザーのメタデータをphoenixの存在下で渡して、JavaScript側からアクセスできるようにします。具体的には、画像ファイルのパス(文字列)をプッシュして、自分のプレゼンスリスト内の各ユーザーに関連付けることができます。ドキュメントは:meta
マップにUserモデルのデータを追加するためのフェッチ/ 2機能をオーバーライドするために、この例を示します:フェニックス存在フェッチ/ 2オーバーライド
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
です。
私は似たようなことをしようとしている人の例を探していましたが、私がここで試しているのと同じようなギターで何かを見つけることができませんでした。
fetch/2関数を再構築して正しく動作するように誰でも考えてください。私は3つのフィールド、電子メール、パスワード、アイコン/アバター画像を持つ基本的なユーザモデルを持っています。
ファイルの先頭に 'require Ecto.Query'を実行してみてください。あなたのエラーは、私がファイルを要求していないときに見られるものと典型的なものです。また、 'Ecto.Query'をインポートしたことを確認してください。 –
編集:naw、それはエラーコードを変更しませんでした。私はまだ警告:変数 "u"が存在せず、 "u()"に展開されています。あいまいを取り除くためにかっこを使い、変数名を主な警告として変更してください。 Ecto.Queryと私のユーザモデルを必要とした後でさえ、replに追加します。 – Abeltensor
'from'はEcto.Queryマクロです。コントローラやモデルでこれを行う必要はありません。たとえば、 'use MyApp.Web、:controller'を実行するとweb.exに既に設定されているからです。 –