标签: mikro-orm

我想用 mikro-orm 插入,但它找不到我的表:c (TableNotFoundException)

所以

安慰:

yarn dev
yarn run v1.22.10
$ nodemon dist/index.js
[nodemon] 2.0.7
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json  
[nodemon] starting `node dist/index.js`     
[discovery] ORM entity discovery started, using ReflectMetadataProvider
[discovery] - processing entity Post
[discovery] - entity discovery finished, found 1 entities, took 21 ms
[info] MikroORM successfully connected to database postgres on postgresql://postgres:*****@127.0.0.1:5432
[query] begin
[query] insert into "post" ("created_at", "title", "updated_at") values ('2021-04-05T21:04:23.126Z', 'my first post', '2021-04-05T21:04:23.126Z') returning …
Run Code Online (Sandbox Code Playgroud)

postgresql database-migration mikro-orm

3
推荐指数
1
解决办法
6328
查看次数

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

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

This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason: ValidationError: You cannot call em.flush() from inside lifecycle hook handlers
Run Code Online (Sandbox Code Playgroud)

我的订阅者看起来像这样:

import { HistoryLog } from 'src/entities/history-log.entity;
export class EntityChangeSubscriber implements EventSubscriber<AnyEntity>  {

  async afterCreate(args: EventArgs<AnyEntity>): Promise<void> {
    console.log('===========1111 AfterCreateHook');
    console.log(args.entity);
  }
  async afterUpdate(args: EventArgs<AnyEntity>): Promise<void> { …
Run Code Online (Sandbox Code Playgroud)

typescript graphql mikro-orm

3
推荐指数
1
解决办法
897
查看次数

Mikro-orm:如何将聚合查询的结果获取到自己的实体中?

假设我有User和一对多 的Post实体。我想获取带有, ,的用户列表。其 sql 查询如下所示:UserPostidusernamepost_count

select u.id, u.username, count(p.id)
from users u left join posts p on u.id = p.user_id
group by u.id
Run Code Online (Sandbox Code Playgroud)

我想将此查询的结果提取到它自己的实体中,例如

class PostsCountPerUser {
  id: string;
  username: string;
  count: number
}
Run Code Online (Sandbox Code Playgroud)

我如何通过 mikro-orm 做到这一点?

node.js typescript mikro-orm

2
推荐指数
1
解决办法
7848
查看次数

何时以及为何在 MikroOrm 中使用 em.clear()

我对 MikroOrm 或任何类似实体管理器中的功能有点困惑em.clear()https://mikro-orm.io/docs/entity-manager方法的链接clear()

我似乎有一些关于一般 EntityManager 的 stackoverflow 答案说我需要clear()在每次调用后调用persist/remove and flush以避免任何内存问题。

为了使这个问题更具体地适合我的情况,据说我在我的应用程序中建立了一个Graphql端点。有一些通用的 CRUD 函数供用户调用,每个函数都会MikroOrm entity利用一些 MikroOrm 函数(例如findOne()等)创建一个对数据库进行一些通用 CRUD 操作的函数。

这是否意味着我需要clear()每次调用persist/remove and flush(如果有一些 CUD 操作)甚至仅读取数据?如果我不调用这个方法会发生什么?

entitymanager mikro-orm

2
推荐指数
1
解决办法
2520
查看次数

我想使用 typescript 将 mikroConfig 初始化为 MikroORM,但我收到此错误消息

错误信息:

'{ readonly entity: readonly [typeof Post]; 只读数据库名称:“lireddit”;只读类型:“postgresql”;只读调试:布尔值;}' 不可分配给类型为 'Configuration<IDatabaseDriver> | 的参数 选项<IDatabaseDriver> | 不明确的'。类型 '{ readonly entity: readonly [typeof Post]; 只读数据库名称:“lireddit”;只读类型:“postgresql”;只读调试:布尔值;}' 不可分配给类型 'Options<IDatabaseDriver>'。类型 '{ readonly entity: readonly [typeof Post]; 只读数据库名称:“lireddit”;只读类型:“postgresql”;只读调试:布尔值;}' 不可分配给类型 'Partial<MikroORMOptions<IDatabaseDriver>>'。财产“实体”的类型是不兼容的。

index.ts:

import { MikroORM } from '@mikro-orm/core';
import { __prod__ } from './constants';
import { Post } from './entities/Post';
import mikroConfig from './mikro-orm.config';

const main = async() => {
    const orm = await MikroORM.init(mikroConfig);
    const post = orm.em.create(Post, {title:'ez az els? posztom hehe'})
    await orm.em.persistAndFlush(post)
}

main().catch((err) …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-typings mikro-orm

2
推荐指数
1
解决办法
330
查看次数

类型错误:domain.enter 不是函数

描述我试图迁移到的错误Mikro-Orm,我已经被这个错误困扰了超过 3 天,该错误的问题是它不能帮助我知道它来自哪里,问题是它发生在随机区域,我评论了很多代码并试图隔离它的来源,但它是不可预测的。我做了很多研究,我想出了这个https://github.com/mysqljs/mysql/issues/1949https://github.com/sipcentric/node-pbx-client/issues/4,我唯一能想到的就是这mysql就是为什么我猜测 MikroOrm 可能会喜欢它。

任何专家的建议将不胜感激。

问题是我加粗的 Nestjs api 没有响应响应

堆栈跟踪

domain.js:547
  domain.enter();
         ^

TypeError: domain.enter is not a function
    at IncomingMessage.EventEmitter.emit (domain.js:547:10)
    at resume_ (_stream_readable.js:972:10)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)
Run Code Online (Sandbox Code Playgroud)

重现 我不知道它是如何发生的。

版本 以下是项目的所有依赖项:

 "dependencies": {
    "@angular/animations": "~10.1.4",
    "@angular/cdk": "^10.2.3",
    "@angular/common": "~10.1.4",
    "@angular/compiler": "~10.1.4",
    "@angular/core": "~10.1.4",
    "@angular/forms": "~10.1.4",
    "@angular/localize": "^10.0.4",
    "@angular/material": "^10.2.3",
    "@angular/platform-browser": "~10.1.4",
    "@angular/platform-browser-dynamic": "~10.1.4",
    "@angular/router": "~10.1.4",
    "@fortawesome/angular-fontawesome": "^0.7.0",
    "@fortawesome/fontawesome-svg-core": "^1.2.30",
    "@fortawesome/free-brands-svg-icons": "^5.14.0",
    "@fortawesome/free-regular-svg-icons": "^5.14.0",
    "@fortawesome/free-solid-svg-icons": "^5.14.0",
    "@mikro-orm/core": "^4.3.4",
    "@mikro-orm/mariadb": "^4.3.4", …
Run Code Online (Sandbox Code Playgroud)

node.js nestjs mikro-orm

1
推荐指数
1
解决办法
928
查看次数

尝试保留未发现的对象类型实体

问题

Nest.js我是和的新手Mikro-ORM,我必须将其作为工作要求来学习。

这个栈需要TypeScript,我打心底里鄙视,但是又不得不做。

我已经设置了我的应用程序,当我执行时npm run start:dev,它启动时没有问题。

但是,当我尝试向数据库添加某些内容时,它会突然出现并给出以下错误块:

[Nest] 5368   - 07/03/2021, 11:52:15 PM   [ExceptionsHandler] Trying to persist not discovered entity of type object. +183188ms
ValidationError: Trying to persist not discovered entity of type object.
    at Function.notDiscoveredEntity (/home/lazar/tuts/backend/node_modules/@mikro-orm/core/errors.js:51:16)
    at SqlEntityManager.persist (/home/lazar/tuts/backend/node_modules/@mikro-orm/core/EntityManager.js:438:48)
    at SqlEntityManager.persistAndFlush (/home/lazar/tuts/backend/node_modules/@mikro-orm/core/EntityManager.js:449:20)
    at SqlEntityRepository.persistAndFlush (/home/lazar/tuts/backend/node_modules/@mikro-orm/core/entity/EntityRepository.js:21:23)
    at UsersService.create (/home/lazar/tuts/backend/dist/users/users.service.js:47:35)
    at UsersController.create (/home/lazar/tuts/backend/dist/users/users.controller.js:25:40)
    at /home/lazar/tuts/backend/node_modules/@nestjs/core/router/router-execution-context.js:38:29
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async /home/lazar/tuts/backend/node_modules/@nestjs/core/router/router-execution-context.js:46:28
    at async /home/lazar/tuts/backend/node_modules/@nestjs/core/router/router-proxy.js:9:17
Run Code Online (Sandbox Code Playgroud)

这是我第一次走进这个堆栈,我不知道该错误意味着什么。当我谷歌这个错误时,我没有得到任何有用的信息。我该怎么做才能让它消失?

相关代码

  • 实体 ( User.ts)
import { Entity, PrimaryKey, …
Run Code Online (Sandbox Code Playgroud)

postgresql typescript nestjs mikro-orm

1
推荐指数
1
解决办法
2989
查看次数

使用 mikro-orm 和 typescript 创建类实例并将其插入 postgresql 数据库时出现问题

我正在尝试按照此React GraphQL TypeScript 教程进行编码

该项目使用 MikroOrm 与 PostgreSQL 数据库进行通信。

目标:创建一个 post 实例并将其插入数据库。

目前我在 19.53 分钟,遇到了以下错误,该错误没有出现在视频中,我不知道为什么。

Post.ts 文件:

@Entity() //correspond to database table.
export class Post {
    @PrimaryKey()
    id!: number;

    @Property({ type: 'date'}) //denote database column, without it its just a class attribute
    createdAt = new Date();

    @Property({ type: 'date', onUpdate: () => new Date() })
    updatedAt = new Date();

    @Property({type: 'text'})
    title!: string;
}
Run Code Online (Sandbox Code Playgroud)

Index.ts 文件:

const main = async () => {
    const orm = await MikroORM.init(microConfig);
    const …
Run Code Online (Sandbox Code Playgroud)

postgresql node.js typescript mikro-orm postgresql-14

1
推荐指数
1
解决办法
1051
查看次数