问题标签 [mikro-orm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
772 浏览

javascript - 如何使用 MikroORM 插入对象图?

我正在尝试一次创建和更新多个实体(模型)。我通过使用insertGraphAPI 在反对 ORM 中做到了这一点,如果它没有 id 则实际插入实体,如果它有 id 则更新。

MikroORM 中是否有类似的 API?

目前我正在这样做:

但它会生成多个事务,我希望在单个事务中处理所有内容。

0 投票
1 回答
265 浏览

mikro-orm - Are custom repository instances created per request?

I am trying to create an application with mikro-orm and apollo-server-express, I want to use the batch processing and the caching of the Facebook dataloader.

Normally, Facebook dataloader instances are creates per request. If mikro-orm also creates custom repository instances per request and if all calls to EntityManager.getRepository() in the same request gets the same instance, it may be the perfect place to create the dataloader instances.

0 投票
1 回答
416 浏览

mikro-orm - 如何发布或分发使用 mikro-orm 的应用程序?

在配置中,我必须指定定义实体的 .js 和 .ts 文件的路径:

所以,我什么时候去发布或分发应用程序。我也需要分发打字稿代码吗?还是我只需要分发生成的缓存?还是我需要同时分发两者?还是……没有?

0 投票
1 回答
839 浏览

mikro-orm - mikro-orm Cascade.REMOVE,是否仅适用于 RDBMS?

我正在将 mikro-orm 与 MongoDB 一起使用并尝试执行 Cascade.REMOVE 但我无法让它工作。

商业实体:

位置实体:

业务数据:

位置数据:

和代码:

“业务”被正确删除,但所有相关的“位置”继续存在。

日志只显示:

[查询记录器] db.getCollection("business").deleteMany() [耗时 0 毫秒]

0 投票
1 回答
172 浏览

mikro-orm - 正确使用 IdentifiedReference 和 { WrappedReference: true }

有了这个,我不理解它,我不想污染原始问题。我需要一直{ wrappedReference: true }使用IdentifiedReference吗?

因为,这失败了:

和:

src/entities/artistEntity.ts(15,38): error TS2345: Argument of type '{ WrappedReference: boolean; }' 不能分配给“id”类型的参数 | “名字” | “密码” | “电子邮件” | “形象” | “艺术家” | “收藏” | “工作室” | ((e:AccountEntity)=>任何)| 不明确的'。对象字面量只能指定已知属性,并且类型“(e:AccountEntity)=> any”中不存在“wrappedReference”。

那么,这会正确吗?

0 投票
0 回答
243 浏览

mikro-orm - 将 mikro-orm 与富域模型一起使用的最佳方法是什么?

Sequelize 缺乏从 DAO 映射到域模型的内容。我想实现与 DAL 的解耦域,包括任何 ORM 库,所以我认为最好的方法是使用 domain<->orm 或类似的东西进入存储库模式。

mikro-orm 是如何设计的,以实现从域和 DAL 解耦中获得推荐的想法,并尽可能成为最高效的 + typescript 功能?

0 投票
1 回答
611 浏览

nestjs - NestJS 中的 Mikro-orm 服务间事务

我正在为未来的项目评估 Mikro-Orm。有几个问题我要么在文档中找不到答案,要么没有完全理解它们。

让我描述一个最小复杂示例(NestJS):我有一个包含两个实体的订单处理系统:Orders以及Invoices一个用于顺序发票编号的计数器表(法律要求)。值得一提的是,OrderService 创建方法并不总是由控制器调用,也可以通过 crobjob/queue 系统调用。我的问题是关于创建新订单的用例:

使用所有后续服务调用创建新订单的整个用例应该发生在一个 Mikro-Orm 事务中。因此,如果在 OrderService.createNewOrder() 或随后调用的方法之一中抛出任何东西,则应该回滚整个事务。

  1. Mikro-Orm 不允许 InvoiceNumberService 中显示的原子更新增量。我可以回退到本地 mongo 驱动程序。但是如何确保对 collection.findOneAndUpdate() 的调用与 Mikro-Orm 管理的实体共享相同的事务?

  2. Mikro-Orm 需要一个独特的请求上下文。在 NestJS 的示例中,这个独特的上下文是在控制器级别创建的。在上面的示例中,服务方法不一定由控制器调用。因此,对于 OrderService.createNewOrder() 的每次调用,我都需要一个新的上下文,其生命周期范围为函数调用,对吗?我怎样才能做到这一点?

  3. 如何在服务之间共享相同的请求上下文?在上面的示例中,InvoiceService 和 InvoiceNumberService 需要与 OrderService 相同的上下文才能使 Mikro-Orm 正常工作。

0 投票
1 回答
360 浏览

mikro-orm - ST_Distance_Sphere 使用 MySQL 驱动程序的 Mikro-orm 命令

使用 MySQL,我正在尝试ST_Distance_Sphere使用QueryBuilder.

我有一个实体:

我正在尝试:

但我得到一个 ORM 错误:

尝试通过不存在的属性 StudioEntity.distance 进行查询

所以,我尝试向实体添加一个属性:

但现在我得到一个 MySQL 错误:

“订单子句”中的未知列“e0.distance”

这是生成的 SQL 查询:

0 投票
1 回答
505 浏览

mikro-orm - 过滤左连接表列时如何对结果进行分页

例如,让我们定义这些实体:

如您所见,我想选择所有书籍名称为“Test”的作者,但这将生成以下查询:

问题是当我有超过 2 位作者并且他们每个人都有超过 10 本书的名称为“测试”时,由于限制子句,此查询将仅返回第一作者。

我不确定这是 ORM 中的错误还是预期的行为。

解决此问题的一种方法是选择没有限制子句的所有行并像在休眠中一样在内存中进行分页,但我不确定非常大的表将使用多少内存,这可能会阻塞事件循环NodeJS 同时处理它们。

0 投票
1 回答
496 浏览

mikro-orm - 如何从 MariaDB 中仅具有复合主键的一对多集合中删除实体

在某个作业实体上调用 experienceLevels.removeAll() 后,它会生成以下查询:

数据库表“job_experience_level”仅包含复合主键(experience_level、job_id)

我已经检查过在调用 removeAll 方法之前集合中有一个实体“高级”。

我在作业实体上使用带有 persistAndFlush 的 entityrepository。

问题是这个查询是错误的,它应该填充正确的job_id。

我还尝试从 experienceLevel 属性中删除 @PrimaryKey() ,但是事务中根本没有删除查询。