所以
安慰:
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) 我对 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) 假设我有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 做到这一点?
我对 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 操作)甚至仅读取数据?如果我不调用这个方法会发生什么?
'{ 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>>'。财产“实体”的类型是不兼容的。
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)
描述我试图迁移到的错误Mikro-Orm,我已经被这个错误困扰了超过 3 天,该错误的问题是它不能帮助我知道它来自哪里,问题是它发生在随机区域,我评论了很多代码并试图隔离它的来源,但它是不可预测的。我做了很多研究,我想出了这个https://github.com/mysqljs/mysql/issues/1949和https://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) 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) 我正在尝试按照此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)