如何重新加载 ecto 记录?

max*_*ner 4 elixir ecto

我有这段代码可以在数据库中插入一条记录。执行此操作后,我需要获取新记录的 id 以传递给客户端。

  msg_record = %Message{
    fromEmail: params["fromEmail"],
    body: params["body"],
    room: room_id
  }
  Repo.insert!(msg_record)
Run Code Online (Sandbox Code Playgroud)

问题是,这样做后msg_record.id仍然为空。

在 Rails 中我会做msg_record.reload.id- 有一些等效的方法吗?

max*_*ner 6

我想我在文档上看起来不够好。

这可以在Ecto 上的 HexDocs 中找到

iex> 天气 = %Weather{temp_lo: 0, temp_hi: 23}

iex> Repo.insert!(天气)

将天气保存到数据库后,它将返回一个新的 %Weather{} 副本,并设置了主键(id)。我们可以使用这个值从存储库中读取一个结构体:

所以就我而言,我可以简单地重新分配变量:

msg_record = Repo.insert!(msg_record)
Run Code Online (Sandbox Code Playgroud)