长生不老药 - Ecto 变更集成功和失败代码不再 运行
elixir - Ecto changeset success and failure code no longer running
此代码用于将字符串添加到 messages 变量,然后在 http 响应中将它们发回。现在没有任何内容被添加到 messages 变量中。 :ok 和 :error 块中的代码行不再运行。我现在应该在哪里处理错误和成功案例,以添加错误和成功消息?
messages = {}
changeset = Api.UserProduct.changeset(
user_product, %{:voted_vegan => true}
)
case Api.Repo.update(changeset) do
{:ok, product} ->
IO.puts("appending messages7")
messages = Tuple.append(messages, "Product updated")
{:error, changeset} ->
IO.puts("appending messages8")
messages = Tuple.append(messages, "Product not updated")
end
conn
|> put_resp_content_type("application/json")
|> send_resp(200, Poison.encode!(%{
successs: "success",
errors: Tuple.to_list(messages)
}))
您的 case 表达式没有副作用,您应该将 case 表达式的返回值(将是执行分支中最后一个表达式的值)分配给 messages
变量。
messages = {}
changeset =
Api.UserProduct.changeset(
user_product,
%{:voted_vegan => true}
)
messages =
case Api.Repo.update(changeset) do
{:ok, product} ->
IO.puts("appending messages7")
Tuple.append(messages, "Product updated")
{:error, changeset} ->
IO.puts("appending messages8")
Tuple.append(messages, "Product not updated")
end
conn
|> put_resp_content_type("application/json")
|> send_resp(
200,
Poison.encode!(%{
successs: "success",
errors: Tuple.to_list(messages)
})
)
此代码用于将字符串添加到 messages 变量,然后在 http 响应中将它们发回。现在没有任何内容被添加到 messages 变量中。 :ok 和 :error 块中的代码行不再运行。我现在应该在哪里处理错误和成功案例,以添加错误和成功消息?
messages = {}
changeset = Api.UserProduct.changeset(
user_product, %{:voted_vegan => true}
)
case Api.Repo.update(changeset) do
{:ok, product} ->
IO.puts("appending messages7")
messages = Tuple.append(messages, "Product updated")
{:error, changeset} ->
IO.puts("appending messages8")
messages = Tuple.append(messages, "Product not updated")
end
conn
|> put_resp_content_type("application/json")
|> send_resp(200, Poison.encode!(%{
successs: "success",
errors: Tuple.to_list(messages)
}))
您的 case 表达式没有副作用,您应该将 case 表达式的返回值(将是执行分支中最后一个表达式的值)分配给 messages
变量。
messages = {}
changeset =
Api.UserProduct.changeset(
user_product,
%{:voted_vegan => true}
)
messages =
case Api.Repo.update(changeset) do
{:ok, product} ->
IO.puts("appending messages7")
Tuple.append(messages, "Product updated")
{:error, changeset} ->
IO.puts("appending messages8")
Tuple.append(messages, "Product not updated")
end
conn
|> put_resp_content_type("application/json")
|> send_resp(
200,
Poison.encode!(%{
successs: "success",
errors: Tuple.to_list(messages)
})
)