1
使用Ecto v2.2.6中使用中間插入結果的結果在使用Ecto
我有一個博客應用程序。當用戶發佈帖子時,它將插入到Post
表中,然後獲取該帖子的結果ID並將其插入到Newsfeeditem
表中。理想情況下,我希望這是作爲交易發生的。
(我用苦艾酒graphql,所以我對插入返回的形式必須是{:ok, post}
)的
我有一個工作的功能,看起來像這樣:
def create_post_add_newsfeed(%{
title: title,
content: content,
user_id: user_id
}) do
case Repo.insert!(%Post{title: title, content: content, user_id: user_id}) do
post ->
case Repo.insert!(%Newsfeeditem{type: "user_creates_post", user_id: user_id, post_id: post.id}) do
newsfeeditem ->
{:ok, post}
_ ->
{:error, "Post not recorded in newsfeed"}
end
_ ->
{:error, "Post not inserted"}
end
end
此代碼是不是交易,並且它回調惡臭。 Ecto.Multi似乎是一個更適合使用的工具,但我不知道如何獲得Post
插入的結果,以便我可以將它插入Newsfeed
。
我願做這樣的事情
不知道如何實現自己的目標?