问题标签 [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 回答
164 浏览

node.js - Type-graphql,Mikoorm 查询返回 Ref而不是用户

我正在使用 Mikro-ORM、Type-graphql、NodeJs、Express、Redis 和 PostgreSQL 创建 Reddit 克隆版本的项目后端

这是我使用 Mikoorm 的初始项目设置,将其连接到 Postgres,并启动 Redis 进行缓存

我的实体为 Post.js 设置

和 User.js

这是我查询所有帖子的解析器,每个帖子都有一个创建者(即用户),一个用户可以创建许多帖子:

这是问题发生的时候,有时返回给我的 Data 只是 Ref 而不是我想要的 User 对象

但有时它确实有效,但很多时候它会失败 Query 因为它只返回 Ref<> 而不是整个用户对象

0 投票
1 回答
699 浏览

node.js - Mikro-orm 教程 - Ben Awad lireddit - 尝试运行第一次迁移

我正在尝试遵循 lireddit 教程,并且遇到了第一个 mikro-orm 迁移。

我遇到了与这篇文章中报告的相同的问题。

我已经修改了示例实体构造函数(尽管使用 mikro-orm 文档中提供的格式会导致相同的问题)。

目前,我有一个Posts.ts文件:

代码运行:

错误消息说:

NotNullConstraintViolationException:插入“post”(“created_at”、“title”、“updated_at”)值('2021-08-18T22:13:54.599Z'、'first title'、'2021-08-18T22:13:54.599 Z') 返回“id” - 关系“post”的“_id”列中的空值违反 PostgreSqlExceptionConverter.convertException 的非空约束

我不知道这意味着什么或如何在id列上设置一个数字。我注意到 mikro-orm 文档使用下划线前缀定义主键(也不确定下划线在做什么),并将其指定为 ObjectId,然后使用序列化的主键。我试过使用这种格式并得到同样的错误。

我也试过:

  1. 添加uuid为主键(而不是id) - 显示在上面的注释代码中,但我得到了同样的错误。

  2. post在const中添加一个数字作为 id :

这也会生成一个 NotNullConstraintViolationException: 错误,说它id是空的。

  1. 这篇文章的建议之一是将以下内容添加到index.ts.

我试过这个,当我运行时yarn dev,终端只是挂在启动命令上(手表环境中没有显示错误)。

  1. 我删除了这两行并再次尝试,这次使用mikro-orm migration:create命令上的初始标志(在删除我的节点模块文件夹、dist文件夹和src/migrations文件夹之后)。

当我尝试时,它说

  1. 我还尝试设置useTsNodetruein package.json- 并遇到与上述相同的问题。

有没有人弄清楚这一点?

我注意到的一件事是,在删除 dist 文件夹和节点模块并重新运行 yarn 后,该dist/index.js文件看起来不像 Ben 的原始文件。它现在说:

然后我尝试创建一个新实体,称为Posted(与 相同Post,但名称相同)。

当我尝试创建该迁移(必须是新的)时,我收到一条错误消息:

TypeError:无法使用“in”运算符在未定义中搜索“schema”

然后它会列出文件node_modules夹中的许多文件,如

0 投票
0 回答
229 浏览

apollo-server - 带有阿波罗服务器的 Mikro-orm 配置 - 实体管理器

我试图弄清楚如何使用 apollo-graphql 将 mikro-orm 连接到 psql。我正在尝试遵循 Ben Awad 的 lireddit 教程。

目前,我坚持使用配置。

这个代码块违反了 mikro-orm 原则,我不知道如何解决它们。

错误消息说:

'{ schema: any; 类型的参数 上下文:()=> { em:任何;}; }' 不可分配给“配置”类型的参数。类型'{架构:任何;上下文:()=> { em:任何;}; }' 缺少类型 'Config' 的以下属性:logger、debug、cache、formatError 和 6 more.ts(2345) Argument of type '{ resolvers: [typeof HelloResolver, typeof PostResolver]; 验证:布尔值;}' 不可分配给“BuildSchemaOptions”类型的参数。对象字面量只能指定已知的属性,并且在“BuildSchemaOptions”类型中不存在“validate”

我尝试修改 types.ts 配置如下:

这并不能解决任何一个问题。

mikro-orm 文档中有一个示例配置,它定义了如下模式:

为此,它需要:

当我尝试这个时,我得到与尝试 Ben 使用的方法时相同的错误。

我在resolver/post.ts中使用Ben的例子有问题,如下:

类型“Promise<{}[]>”不可分配给类型“Promise<Post[]>”。
类型“{}[]”不可分配给类型“Post[]”。类型“{}”缺少“Post”类型的以下属性:id、createdAt、updatedAt、title

Graphql 根本不识别后解析器。

有没有人想出如何在这一步完成配置以将 mikro-orm 与 psql 和 apollo graphql 连接起来(进入教程 50 分钟)?

0 投票
1 回答
118 浏览

typescript - 如何测试使用 MikroORM 构建的 express rest api?

索引.ts:

音乐测试.ts

})

我的意思是,我想在所有测试结束后关闭连接,但我不能这样做,因为 ORM 连接是由函数引导程序返回的,只能在“it”范围内调用。

谁能帮我做这样的事情?

存储库是:https ://github.com/brenomacedo/g-track/tree/master/backend

0 投票
1 回答
21 浏览

mikro-orm - 显示数据透视列

我有 3 张桌子

帐户

  • ID
  • 帐户

account_has_devices

  • 帐户ID
  • 设备ID
  • 地位
  • is_master

设备

  • ID
  • 姓名
  • 信息

accounts_has_devices aka 数据透视表包含与用户关联的设备的一些信息,设备表包含设备本身的信息:

存在获取数据透视数据+设备的方法吗?

0 投票
1 回答
91 浏览

node.js - 如何使用 mikro-orm 和 nestjs 获取左表数据

请在下面找到两个表格书和作者的代码示例,我想列出所有书籍以及作者详细信息,

作者:

服务:

目前我得到的结果如下: Ref { id: 4 } 但我想获取所有作者详细信息以及 id。

如果可能,请在服务页面中更正。

0 投票
1 回答
158 浏览

node.js - mikro-orm 中的 EntityManager、EntityRepository 是什么以及它们之间的区别?

请用非常简单的语言和适当的例子进行解释,我已经按照官方文档进行了但是我没有理解清楚。

0 投票
2 回答
242 浏览

typescript - 在 mikroORM 中创建迁移时数据库不存在

我试图 mikroORM 创建迁移,但似乎我无法创建表本身。我不知道我错过了什么,错误说数据库“crm”不存在。

请看下面的代码:

mikro-config.ts

索引.ts

Post.ts

npx mikro-orm 迁移:创建 --initial。

我已经删除了文件夹并再次尝试没有任何反应。

0 投票
1 回答
75 浏览

postgresql - 如何更改通过 micro-orm 连接到 PostgreSQL 的端口号?

通过 CLI 命令创建迁移时npx mikro-orm migration:create,它会引发错误:

MikroORM failed to connect to database test on postgresql://postgres@127.0.0.1:5432

如您所见,它尝试连接到端口号 5432,这是设置 PostgreSQL 时给出的默认端口号,但我在系统上设置 PSQL 时将该端口号更改为 5000。

如何让 MikroORM 连接到端口 5000?

0 投票
1 回答
108 浏览

typescript - 使用 EventSubscriber 在 mikroorm 中注册数据库历史记录

我对 LifcycleHooks 和 EventSubscribers 的概念相当陌生。我正在尝试填充一个历史记录表,该表记录对任何其他表所做的更改。我一直在尝试为此使用 EventSubscriber:想法是在我的 eventSubscriber 的 onFlush 事件触发器上,我从变更集中提取所有更改的值和字段,并创建历史表的对象并尝试将其持久化,但我看到以下错误:

我的订阅者如下所示:

mikro-orm-postgres.config.ts注册了订阅者,我可以看到正在加载的变更集 subscribers: [new EntityChangeSubscriber()]

我该如何实施?有没有办法可以将 EventSubscriber 的结果返回到服务类并在那里进行持久化操作?