我有一个简单的Phoenix Channel来处理消息的websockets。我尝试将模型的插入添加到数据库中,并在我传递这些消息参数时收到此错误。
def handle_in("new:msg", msg, socket) do
message_params = %{"body" => msg["body"]}
changeset = Message.changeset(%Message{}, message_params)
case Repo.insert(changeset) do
{:ok, room} ->
broadcast! socket, "new:msg", %{user: msg["user"], body: msg["body"]}
{:reply, {:ok, %{msg: msg["body"]}}, assign(socket, :user, msg["user"])}
{:error, changeset} ->
end
end
这是错误。关于这可能是什么的任何想法都非常受欢迎。
Repo.insert(%Ecto.Changeset{action: nil, changes: %{body: "feaflje"}, constraints: [], errors: [], filters: %{}, model: %PulseApi.Message{__meta__: #Ecto.Schema.Metadata<:built>, body: nil, id: nil, inserted_at: nil, room: #Ecto.Association.NotLoaded<association :room is not loaded>, room_id: nil, updated_at: nil}, optional: [], opts: [], params: %{"body" => "feaflje"}, repo: nil, required: [:body], types: %{body: :string, id: :id, inserted_at: Ecto.DateTime, room_id: :id, updated_at: Ecto.DateTime}, valid?: true, validations: []})
答案 0 :(得分:0)
我必须将项目名称添加到正确的名称空间Repo中才能使其正常工作。
Repo必须是ProjectName.Repo
case PulseApi.Repo.insert(changeset) do
{:ok, room} ->
broadcast! socket, "new:msg", %{user: msg["user"], body: msg["body"]}
{:reply, {:ok, %{msg: msg["body"]}}, assign(socket, :user, msg["user"])}
{:error, changeset} ->
end