NestJs/TypeORM:如何保存多对多

2023-12-12

我正在尝试保存多对多关系。每个实体本身都运行良好。

这是我正在使用的两个实体文件:

// location.entity

@ManyToMany(type => User, user => user.locations, { eager: true, cascade: true })
@JoinTable()
users: User[];
// user.entity
@ManyToMany(type => Location, location => location.users, { eager: false })
locations: Location[];

这是用户存储库:

// user.repository
...
user.locations = locations;  // [1,2,3]
user.uuid = uuidv4();

try {
    await user.save();
      
    for (const location of user.locations) {
        locationsArray.push({ locationId: location, userId: user.id });
    }

    await user.locations.save(locationsArray);

看着本指南看起来我应该可以打电话save()关于我的关系。就我而言user.locations.save(locations).

但是,这会返回一个错误:

类型“Location[]”上不存在属性“save”。

Using 这个 S.O 线程我知道我需要循环遍历位置 Id 数组并创建我需要保存的实际对象:

[{ locationId: location, userId: user.id }]

我需要保存用户first这样我就可以得到一个userId。

我怎样才能挽救我与我的关系location_users_user桌子?感谢您的任何建议!

EDIT

谢谢@Youba!请参阅下面的解决方案以获取更多信息。 希望这会帮助别人......

// location.entity.ts

...

@ManyToMany(type => User, user => user.locations, { eager: false })
@JoinTable()
users: User[];
// user.entity.ts

...

@ManyToMany(type => Location, location => location.users, { eager: false, cascade: true })
locations: Location[];

cascade默认为 false。启用此功能将允许您调用save方法和数据透视表将适当更新。

您还需要引入另一个模块(用户/位置等)。感谢优霸,你可以请参阅此处如何实现。


What您需要做的就是获取位置数据并将其绑定到新用户

...
  
try {
    
 const user = new User(); //user entity
user.uuid = uuidv4();
   const locationsData: Location[] = await this.locationRepository.findByIds(locations); // array of location entity
    await user.locations = locationsData;
   await user.save();
    }

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

NestJs/TypeORM:如何保存多对多 的相关文章

随机推荐

  • Java 9 子包跨模块拆分

    在 Java 9 中 我可以跨模块拆分子包吗 例如 我可以有com example foo在一个模块中并且com example foo bar在另一个模块中 这似乎是一个简单的问题 但由于某种原因 我在搜索后无法找到直接答案 如有权威参考
  • 有哪些工具和语言可用于 Windows shell 脚本编写?

    我想知道在 Windows 平台上执行一些脚本工作的选项有哪些 我需要文件操作 注册表编辑等功能 可以使用脚本工具编辑文件吗 Windows 脚本工具还提供哪些其他功能 使用 Windows GUI 可以完成的所有操作都可以使用脚本语言完成
  • 使用 ScheduleJobs 调用计划

    我一直在试图弄清楚如何在 Quartz Net 中调用 ScheduleJobs 方法 但努力创建它所期望的正确参数 这是我尝试过的 IJobDetail jobDetail JobBuilder Create
  • UILabel 中的文本可以分配有 colorWithPatternImage: 吗?

    如果是这样 图像可以动画化吗 有充分的理由不这样做吗 内存使用情况等 是的 标签可以有图案颜色 替代文本 http img178 imageshack us img178 1995 textwithpatterncolor png make
  • 没有名为tensorflow.python.platform的模块

    我在跑步tensorflow g3doc tutorials mnist fully connected feed py I get hiro106 hiro106 virtual machine python tensorflow ten
  • 无法通过 Watir 连接到 Tor-Firefox

    我在通过 Ruby Watir webdriver 连接到 Tor 时遇到问题 我使用 Tor 浏览器捆绑包 问题是 当我尝试通过 Watir Selenium 连接时 我似乎无法打开 Tor 而不是常规的 Firefox 看着类似的问题
  • 两个 Android 应用和一个 Firebase 数据库

    我需要为两个 Android 应用程序使用一个 Firebase 数据库 一个应用程序将具有对数据库的写访问权限 另一个应用程序将具有对数据库的读访问权限 这两个应用程序必须分开 我无法合并它们 我可以为两个应用使用一个 Firebase
  • 如何检测 UI 和游戏对象上的点击/触摸事件

    如何在android中检测Canvas on Touch上的UI对象 例如 我有一个画布 其中有 5 个对象 例如Image RawImage Buttons InputField等等 当我触摸 Button UI 对象时然后执行某些操作
  • 根据对象属性值在 Cloudant (CouchDB) 中创建视图

    我一直在尝试找到满足此要求的解决方案 但遇到了很多死胡同 我在用着Cloudant作为我的用户文档的数据存储 每个用户文档都有一个名为 items 的字段 属性 它是一个对象数组 所以用户文档看起来像这样 id userid1 rev XX
  • 在 Swift 中创建 PDF

    我正在关注苹果的文档在 Swift 中使用 Xcode6 Beta6 创建 PDF 文件 var currentText CFAttributedStringRef CFAttributedStringCreate nil textView
  • 如何一次性将 df 列值映射到十六进制颜色?

    我有一个包含两列的 pandas 数据框 其中一列值需要映射到十六进制颜色 另一个绘图过程从那里接管 这是我到目前为止所尝试过的 部分玩具代码取自here import pandas as pd import matplotlib impo
  • 如何在R中使用fportfolio包进行非时间序列输入?

    对于 fportfolio 包 您需要将回报的时间序列作为输入 并在内部计算预期回报和时间序列的方差 然后在诸如 portfoliofrontier 或 tangencyportfolio 等函数中使用 但就我而言 我已经有了预期收益矩阵和
  • 打开键盘时无法滚动到结果末尾 (Windows Phone)

    我正在开发 Windows Phone 应用程序 但遇到了这个问题 我有一个显示搜索结果的列表控件 但是当打开键盘时 由于键盘原因 某些结果不可见 有没有办法将控件缩小到键盘边框 为了看到所有的结果 即使键盘打开 我也想滚动直到结果末尾 有
  • Java正则表达式:重复组?

    如何在 Java Regex 中定义重复组 假设一个 2 位数字 0 9 2 多次由 分隔 12 34 98 11 这是可能的还是唯一的机会 编辑 我喜欢验证和提取 在Java中你也可以使用Scanner用于此目的的 API final P
  • 持续交付的原则

    如上所述here 以下是持续交付的原则 Every build is a potential release Eliminate manual bottlenecks Automate wherever possible Have auto
  • 创建高级过滤器

    我正在尝试从 C 在 Excel 中创建高级过滤器 以将唯一数据从一张工作表复制到另一张工作表 至少我在 Excel 中得到它 并且如果我使用这样的互操作 Excel Range rang sheet2 get Range A2 Excel
  • 代码点火器 + HMVC + REST

    我正在开发基于 Codeigniter HMVC 的应用程序 我正在尝试添加一个新模块 我用菲尔 斯特金的REST 控制器 2 6 0 and Format用于将 REST API 创建为模块的库 当我尝试获取例如http api exam
  • PHP 分层数组 - 父级和子级

    我使用 PHP 和 mySQLIdiorm 这可能不相关 我的 PHP 数组 这是父母和孩子之间的关系 0 是根父级 示例 根父级 0 有子级 33 其子级 27 有 孩子 71 如果需要解决问题 可以更改此数组结构 array 33 gt
  • 更新资源管理器配置而不重新启动它

    我想知道是否有一种方法可以刷新 HKLM 注册表项 HKCU SOFTWARE Microsoft Windows CurrentVersion Policies Explorer 无需重新启动 shell 我希望能够在不重新启动资源管理器
  • NestJs/TypeORM:如何保存多对多

    我正在尝试保存多对多关系 每个实体本身都运行良好 这是我正在使用的两个实体文件 location entity ManyToMany type gt User user gt user locations eager true cascad