问题标签 [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.
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<> 而不是整个用户对象
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,然后使用序列化的主键。我试过使用这种格式并得到同样的错误。
我也试过:
添加
uuid
为主键(而不是id
) - 显示在上面的注释代码中,但我得到了同样的错误。post
在const中添加一个数字作为 id :
这也会生成一个 NotNullConstraintViolationException: 错误,说它id
是空的。
这篇文章的建议之一是将以下内容添加到
index.ts
.
我试过这个,当我运行时yarn dev
,终端只是挂在启动命令上(手表环境中没有显示错误)。
- 我删除了这两行并再次尝试,这次使用
mikro-orm migration:create
命令上的初始标志(在删除我的节点模块文件夹、dist
文件夹和src/migrations
文件夹之后)。
当我尝试时,它说
- 我还尝试设置
useTsNode
为true
inpackage.json
- 并遇到与上述相同的问题。
有没有人弄清楚这一点?
我注意到的一件事是,在删除 dist 文件夹和节点模块并重新运行 yarn 后,该dist/index.js
文件看起来不像 Ben 的原始文件。它现在说:
然后我尝试创建一个新实体,称为Posted
(与 相同Post
,但名称相同)。
当我尝试创建该迁移(必须是新的)时,我收到一条错误消息:
TypeError:无法使用“in”运算符在未定义中搜索“schema”
然后它会列出文件node_modules
夹中的许多文件,如
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 分钟)?
typescript - 如何测试使用 MikroORM 构建的 express rest api?
索引.ts:
音乐测试.ts
})
我的意思是,我想在所有测试结束后关闭连接,但我不能这样做,因为 ORM 连接是由函数引导程序返回的,只能在“it”范围内调用。
谁能帮我做这样的事情?
存储库是:https ://github.com/brenomacedo/g-track/tree/master/backend
mikro-orm - 显示数据透视列
我有 3 张桌子
帐户
- ID
- 帐户
account_has_devices
- 帐户ID
- 设备ID
- 地位
- is_master
设备
- ID
- 姓名
- 信息
accounts_has_devices aka 数据透视表包含与用户关联的设备的一些信息,设备表包含设备本身的信息:
存在获取数据透视数据+设备的方法吗?
node.js - 如何使用 mikro-orm 和 nestjs 获取左表数据
请在下面找到两个表格书和作者的代码示例,我想列出所有书籍以及作者详细信息,
书
作者:
服务:
目前我得到的结果如下: Ref { id: 4 } 但我想获取所有作者详细信息以及 id。
如果可能,请在服务页面中更正。
node.js - mikro-orm 中的 EntityManager、EntityRepository 是什么以及它们之间的区别?
请用非常简单的语言和适当的例子进行解释,我已经按照官方文档进行了但是我没有理解清楚。
typescript - 在 mikroORM 中创建迁移时数据库不存在
我试图 mikroORM 创建迁移,但似乎我无法创建表本身。我不知道我错过了什么,错误说数据库“crm”不存在。
请看下面的代码:
mikro-config.ts
索引.ts
Post.ts
npx mikro-orm 迁移:创建 --initial。
我已经删除了文件夹并再次尝试没有任何反应。
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?
typescript - 使用 EventSubscriber 在 mikroorm 中注册数据库历史记录
我对 LifcycleHooks 和 EventSubscribers 的概念相当陌生。我正在尝试填充一个历史记录表,该表记录对任何其他表所做的更改。我一直在尝试为此使用 EventSubscriber:想法是在我的 eventSubscriber 的 onFlush 事件触发器上,我从变更集中提取所有更改的值和字段,并创建历史表的对象并尝试将其持久化,但我看到以下错误:
我的订阅者如下所示:
我mikro-orm-postgres.config.ts
注册了订阅者,我可以看到正在加载的变更集
subscribers: [new EntityChangeSubscriber()]
我该如何实施?有没有办法可以将 EventSubscriber 的结果返回到服务类并在那里进行持久化操作?