deepkit-framework icon indicating copy to clipboard operation
deepkit-framework copied to clipboard

[BUG] ORM serialization problem with table connection.

Open Lydanne opened this issue 3 years ago • 0 comments

Desc

JSON that appears when I perform an associated query of user and role Stringify() problem.

Code

RoleEntity.ts

import { BackReference, entity, Index, MinLength, Unique } from "@deepkit/type";
import { Common } from "./CommonEntity";
import { User } from "./UserEntity";
import { UserJoinRole } from "./UserJoinRoleEntity";

@entity.name("role")
export class Role extends Common {
  name!: string & Unique & MinLength<1>;

  note: string = ""; // 备注

  actions: string[] = []; // 权限

  users?: User[] & BackReference<{ via: typeof UserJoinRole }>;

  constructor() {
    super();
  }
}

UserEntity.ts

import { BackReference, entity, MinLength, Unique } from "@deepkit/type";
import { Common } from "./CommonEntity";
import { Role } from "./RoleEntity";
import { UserJoinRole } from "./UserJoinRoleEntity";

@entity.name("user")
export class User extends Common {
  username!: string & Unique & MinLength<4>;
  password!: string & MinLength<4>;

  name!: string & Unique & MinLength<1>;

  roles?: Role[] & BackReference<{ via: typeof UserJoinRole }>;

  constructor() {
    super();
  }
}

UserJoinRoleEntity.ts

import { entity, Reference } from "@deepkit/type";
import { User } from "@app/orm/entities/UserEntity";
import { Common } from "./CommonEntity";
import { Role } from "./RoleEntity";

@entity.name("user_join_role")
export class UserJoinRole extends Common {
  constructor(public user: User & Reference, public role: Role & Reference) {
    super();
  }
}

Please check this warehouse for details https://github.com/WumaCoder/deepkit-template/tree/issue/orm-stringify-bug

Error

2022-05-03T11:00:55.150Z [ERROR] HTTP kernel request failed Error: Reference Role.users was not populated. Use joinWith(), useJoinWith(), etc to populate the reference.
    at Role.get [as users] (/Users/wmc/workspace/deepkit-template/node_modules/.pnpm/@[email protected]_1917e6869355259966282aa5b39cebd0/node_modules/@deepkit/orm/src/formatter.ts:93:27)
    at JSON.stringify (<anonymous>)
    at HttpResultFormatter.handleUnknown (/Users/wmc/workspace/deepkit-template/node_modules/.pnpm/@[email protected]_1dd46d10d77d840c9f0659f5c831d264/node_modules/@deepkit/http/src/http.ts:390:35)
    at HttpResultFormatter.handle (/Users/wmc/workspace/deepkit-template/node_modules/.pnpm/@[email protected]_1dd46d10d77d840c9f0659f5c831d264/node_modules/@deepkit/http/src/http.ts:444:18)
    at HttpListener.onResponse (/Users/wmc/workspace/deepkit-template/node_modules/.pnpm/@[email protected]_1dd46d10d77d840c9f0659f5c831d264/node_modules/@deepkit/http/src/http.ts:702:30)
    at self (eval at buildAsync (/Users/wmc/workspace/deepkit-template/node_modules/.pnpm/@[email protected]/node_modules/@deepkit/core/src/compiler.ts:111:20), <anonymous>:270:52)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async HttpKernel.handleRequest (/Users/wmc/workspace/deepkit-template/node_modules/.pnpm/@[email protected]_1dd46d10d77d840c9f0659f5c831d264/node_modules/@deepkit/http/src/kernel.ts:40:17)

Reproduction

  1. pnpm i && pnpm dev && pnpm start init
  2. request GET /user api

Lydanne avatar May 03 '22 11:05 Lydanne