为什么我收到#Ecto.Association.NotLoaded?

2024-03-18

我有团队,每个团队都有用户,因此有一个连接表将用户链接到团队,因为它是多对多关系,这是我的模型:

defmodule App.Team do
  use App.Web, :model

  schema "teams" do
    field :owner_id, :integer
    has_many :team_users, {"team_user", App.TeamUser}
  end

end
defmodule App.User do
  use App.Web, :model

  schema "users" do
    # field :email, :string
    has_many :team_user, App.TeamUser
  end
end

这是连接模型:

defmodule App.TeamUser do
  use App.Web, :model

  @primary_key false
  schema "team_user" do
    belongs_to :user, App.User
    belongs_to :team, App.Team
  end

end

如果我运行查询来获取用户的所有团队以及所有结果团队的用户,如下所示:

teams_users =
      from(t in Team, where: t.owner_id == ^user_id)
      |> Repo.all()
      |> Repo.preload(:team_users)

我得到这个日志:

[%App.Team{__meta__: #Ecto.Schema.Metadata<:loaded>, id: 1,
  is_base_team: true, owner_id: 3,
  team_users: [%App.TeamUser{__meta__: #Ecto.Schema.Metadata<:loaded>,
    team: #Ecto.Association.NotLoaded<association :team is not loaded>,
    team_id: 1,
    user: #Ecto.Association.NotLoaded<association :user is not loaded>,
    user_id: 3},
   %App.TeamUser{__meta__: #Ecto.Schema.Metadata<:loaded>,
    team: #Ecto.Association.NotLoaded<association :team is not loaded>,
    team_id: 1,
    user: #Ecto.Association.NotLoaded<association :user is not loaded>,
    user_id: 4},
   %App.TeamUser{__meta__: #Ecto.Schema.Metadata<:loaded>,
    team: #Ecto.Association.NotLoaded<association :team is not loaded>,
    team_id: 1,
    user: #Ecto.Association.NotLoaded<association :user is not loaded>,
    user_id: 5}]}]

在日志中,我得到了 id 为 1 的团队,及其所有用户的 id:(3, 4, 5) 但为什么我得到了user: #Ecto.Association.NotLoaded<association :user is not loaded>?我没有要求以任何方式加载该 id 的用户..那为什么我收到这样的警告?

我在用{:phoenix_ecto, "~> 3.0-rc}


您需要预加载:user以及:team_users:

teams_users =
  from(t in Team, where: t.owner_id == ^user_id)
  |> Repo.all()
  |> Repo.preload(team_users: :user)

文档中有一个关于嵌套关联的部分。https://hexdocs.pm/ecto/Ecto.Query.html#preload/3 https://hexdocs.pm/ecto/Ecto.Query.html#preload/3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我收到#Ecto.Association.NotLoaded? 的相关文章

  • 当作为函数参数传递时,elixir 是否会生成映射的副本?

    换句话说 我想知道在 Elixir 中 映射是通过值还是通过引用传递给函数 鉴于 Elixir 的无副作用原则 我怀疑这是有价值的 但是大地图不会造成巨大的重复效率低下吗 在此先感谢您的帮助 由于 Elixir 中的所有术语都是不可变的 因
  • Elixir GenServer 并行handle_call

    Phoenix框架上有一个应用程序 需要 GenServer 它将检查一些值 这些值的验证从控制器开始 来自客户端的请求 GenServer 值检查 客户端接收响应 一旦handle call是同步的 那么当10个客户端同时调用10个han
  • 打造 ecto 独一无二的领域

    如何制作一个字段unique在体外 我以为它和Ruby中的活动记录一样 但似乎不是 你想使用唯一约束 3 http hexdocs pm ecto Ecto Changeset html unique constraint 3 这与 Act
  • 可以用宏获取评论吗?

    我试图解析一些代码并重新格式化它们 但似乎引用只会忽略注释 有什么办法可以实现这一点吗 我想我必须深入 erlang 方面 不 您无法在宏内获取代码注释 它们永远不会成为 AST 的一部分 并且仍然被丢弃在 Elixir 的标记器中
  • 仅针对使用通道而定制的 Phoenix 应用程序如何在多台机器上扩展?使用HAProxy?如何向所有节点广播消息?

    我将节点应用程序纯粹用于带有 Redis PubSub 的 socket io 通道 目前我将其分布在 3 台机器上 并由其中一台机器上的 nginx 负载平衡提供支持 我想用 Phoenix 应用程序替换这个节点应用程序 而且我对 erl
  • 如何在phoenix中使用session连接?

    我有一个身份验证插头 我想测试我的控制器 问题是这个插头里的线有 user id get session conn user id 当我使用这种方法时它总是为零 我以前使用过dirty hack 但我不再想这样做 session Plug
  • GenServer 正常关闭

    我使用 GenServer 编写了一个 Elixir 应用程序 该应用程序在启动时启动外部应用程序 然后将其关闭 并在退出时进行其他清理 我在中添加了启动功能init 1 https hexdocs pm elixir GenServer
  • Ecto 中按日期时间查询

    这是我尝试过的 date Ecto DateTime from erl calendar universal time query gt where record record deadline gt date 我也尝试过 date Ect
  • 如何在 Elixir 中截断字符串?

    我正在使用长生不老药的鼻涕虫 想法是 我有一个字符串 a zA Z0 9 用连字符分隔的单词 喜欢 string another long string to be truncated and much text here 我想确保最大字符
  • 分配 @changeset 在 eex 模板中不可用

    我正在尝试学习包含 Ecto Model 的 Phoenix 表单系统 但我遇到了一个无法通过的问题 我创建了一个表格 div class jumbotron div
  • Phoenix 编程:未定义函数 page_path/2

    我的网络应用程序遇到问题 出现以下编译错误 Compilation error on file web controllers auth ex CompileError web controllers auth ex 49 undefine
  • 使用 Elixir 设置日期格式

    我正在尝试将 Timex 模块格式化为某种外观 我正在尝试获取今天的日期 但我希望它的格式如下 2017 12 12 年 月 日 在 ruby 中 我会去 strftime 类 但我不知道如何使用 Elixir 来做到这一点 目前的尝试 T
  • 如何在简单的 Elixir 脚本中加载 Elixir 库?

    在 ruby 脚本中 我可以简单地执行以下操作 require some gem SomeGem do something 我怎样才能在 Elixir 中做类似的事情exs脚本而不创建一个全新的混合项目 到目前为止 我已经在谷歌上搜索了执行
  • Phoenix 框架 - 每个路由的页面标题

    在 Phoenix 框架中 有一种基于路由 路径设置页面标题的常用技术 或者这只是一个调用的问题assign page title fred 在我的路由函数内的正确位置 Update 我最终实现了 michalmuskala 解决方案的变体
  • 类型不匹配插入:binary_id 与 Ecto 变更集

    我有一张桌子applications有外键user id这是一个 Postgresuuid 我在我的web ex primary key id binary id autogenerate true foreign key type bin
  • Elixir 如何将 Map 结构转换为 Record 结构

    我有一个 Record 结构和一个 Map 结构 例如 defmodule Foo Bar do defstruct boo nil baz nil end defmodule Foo do require Record Record de
  • 如何在 Elixir 中展平嵌套列表?

    我有一个嵌套列表 1 2 3 4 5 6 我怎样才能把它压平 使它变成 1 2 3 4 5 6 无需重新发明轮子 只需使用List flatten 1 https hexdocs pm elixir List html flatten 1
  • Phoenix:在模板内分配值的渲染模板

    我正在尝试使我的应用程序干燥且模块化 但是 当我尝试将一个组件 小模板 放入另一个模板 较大的模块 中 该组件接收调用 实例化 时传递的动态值时 我收到此错误 assign conn not available in eex templat
  • Elixir assert_raise 无法捕获异常

    我写了这个测试用例 assert raise ArgumentError myFn a b 但它并没有按照我期望的方式进行评估 myFn引发一个 ArgumentError do raise ArgumentError 但它没有被捕获ass
  • 如何获得 Elixir 中每种类型的最小值和最大值

    如何获得 Elixir 中每种类型的最小值和最大值 例如整数 浮点数和字符串的最大可能长度 我知道在C中它的定义是limits h as INT MIN INT MAX等等 关于 Elixir 中这些类型的限制的文档在哪里 Elixir 实

随机推荐

  • 如何获取数据透视表每行的最大和最小列数?

    非常感谢 约翰卡佩莱蒂 https stackoverflow com users 1570000 john cappelletti他展示了如何旋转桌子 这是一个示例数据 DECLARE OperatorPrice TABLE ID int
  • vuejs2:我如何销毁观察者?

    我怎样才能摧毁这个观察者 当我的异步数据从父组件加载时 我的子组件中只需要一次 export default watch data function this sortBy 格雷戈尔 如果通过调用 vm watch 函数动态构造观察程序 它
  • JAVA:如何将私钥保存在具有密码保护的 pem 文件中

    我正在尝试将私钥保存在pem文件 受密码保护 问题是 pem文件已创建 我 甚至可以用 openssl 打开它 但是不需要密码 这是代码 KeyPairGenerator keygen KeyPairGenerator getInstanc
  • For Each 循环的逆序

    VB 最强大的功能之一是能够循环访问集合中的对象而不引用索引 for each loop 我发现它非常有用 只想从集合中删除对象 当从预定义对象 例如电子表格上的行 中删除对象时 如果我使用索引并从最大的对象开始并返回到第一个 则代码会更简
  • smartpackage 中的 Meteor 项目路径

    我正在寻找一种从智能包中查找流星项目路径的方法 例如 获取 meteor 文件夹所在目录的路径 我无法使用节点的 dirname 和 filename 来完成此操作 因为不知何故在流星中它们不可用 有小费吗 从 Meteor 0 6 0 开
  • 如何等待所有协程完成?

    我正在启动一个协程 我希望它在恢复执行主线程之前完成 我的代码简化如下 fun hello for i in 0 100 println hello fun main args Array
  • 多个环境中的 Azure 云服务项目配置(.csdef 和 .cscfg)

    目前我们有一个开发云服务 acme dev service 和一个生产云服务 acme prod service 我们解决方案中当前的设置有一个名为 acme application 的云服务项目 它使用 cscfg 和 csdef 文件的
  • Firebase 电话身份验证在发布时不起作用 (Android)

    当使用我的应用程序的调试版本时 电话身份验证有效 当我在手机上手动安装发布签名的 apk 时 电话身份验证也有效 但是当我将相同的工作 apk 发布到 Play 商店 Alpha 测试 时 我无法使其工作 经过一番挖掘后得到了这个 此应用无
  • Tidyr 与可选组分开

    我正在尝试使用extract来自 tidyr 包 将包含单个字符串的列拆分为 3 个单独的列 该问题的最小工作示例如下 A tibble 3 x 1 question codes
  • jquery ajax post成功返回数据

    我无法取回我的数据 这是我的代码 哪里有问题 谢谢 索引 php
  • 如何使用嵌套生成器编写 jqwik 生成器方法

    使用 jqwik net 尝试生成一个 Rule 类 其中包含一个嵌套的 RuleConfig 类 RuleConfig 类有一个嵌套的ruleProps 它是一个Map statusReturnedFromApplyingRule 方法始
  • 如何序列化包含指向原语的指针的类?

    我正在尝试使用 boost 的功能来序列化指向原语的指针 这样我就不必自己取消引用并进行深度存储 然而 当我尝试这样做时 我遇到了一堆错误 这是一个应该包含的类的简单示例save and load从文件中写入和读取类内容的方法 该程序无法编
  • 如何访问查询结果? [复制]

    这个问题在这里已经有答案了 我正在编写一个简单的测试来验证 id 列中不同值的数量与每个表的行数匹配 我期望能够访问对象的特定值 但是当我运行代码并尝试打印变量的值时 我可以看到我的对象是一个 sqlalchemy engine resul
  • jQuery 滚动对吗?

    我有以下代码 似乎可以在单击时将 div 一直滚动到左侧 我想知道是否 有一种方法可以让它一次只滚动 200px 我也可以让它向右滚动 试图查看 jQuery 文档 但找不到scrollToRight 函数 这是我的代码 leftArrow
  • 是否可以在 Firebase 上查询 !equalTo: null ?

    我使用此查询来验证我的 Firebase 上是否存在数据 使用 AngularFire2 let aux this afData list drivers query orderByChild accountHistory approved
  • Ruby on Rails“content_for:title”如何获得稍后分配的内容?

    简短的问题是 子页面如何 set the title主要布局 details 我们可以在应用程序布局中使用application html erb
  • 通过终端列出视频设备

    如何通过终端列出计算机的视频设备 有没有列出它们的命令 列出视频output设备 例如监视器 system profiler SPDisplaysDataType 这会产生如下所示的输出 Graphics Displays Intel HD
  • 动态加载 Jar 并实例化已加载类的对象

    我尝试将 jar 动态加载到我的 Java 项目中 这是类加载器的代码 public class ClassLoad public static void main String args String filePath new Strin
  • 如何强制将特定程序集加载到 MVC 2 应用程序的每个应用程序域中?

    我有一些松散耦合的代码 这些代码取决于加载到当前应用程序域中的特定程序集 Assembly assembly AppDomain CurrentDomain GetAssemblies Where candidateAssembly gt
  • 为什么我收到#Ecto.Association.NotLoaded?

    我有团队 每个团队都有用户 因此有一个连接表将用户链接到团队 因为它是多对多关系 这是我的模型 defmodule App Team do use App Web model schema teams do field owner id i