首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TypeORM外键在查找调用中不显示

TypeORM是一个用于Node.js和TypeScript的ORM(对象关系映射)框架,它提供了一种方便的方式来操作数据库。在TypeORM中,外键是一种用于建立表之间关系的机制。然而,在查找调用中,TypeORM默认情况下不会显示外键的值,而只会显示外键的ID。

这种行为是由TypeORM的设计决策所决定的,目的是为了提高性能和减少数据传输量。当我们在查询数据时,TypeORM只会返回与外键相关的ID,而不会自动加载关联实体的详细信息。这样可以减少数据库查询的数量和数据传输的大小,提高查询性能。

如果我们想要在查找调用中显示外键的详细信息,我们可以使用TypeORM的关联加载功能。关联加载允许我们在查询数据时同时加载关联实体的详细信息。我们可以使用leftJoinAndSelectinnerJoinAndSelect方法来实现关联加载。

以下是一个示例代码,演示如何在TypeORM中使用关联加载来显示外键的详细信息:

代码语言:txt
复制
import { Entity, PrimaryGeneratedColumn, Column, BaseEntity, ManyToOne, createConnection } from "typeorm";

@Entity()
class User extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @ManyToOne(() => Role, role => role.users)
  role: Role;
}

@Entity()
class Role extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  description: string;

  @OneToMany(() => User, user => user.role)
  users: User[];
}

async function main() {
  const connection = await createConnection({
    type: "mysql",
    host: "localhost",
    port: 3306,
    username: "root",
    password: "password",
    database: "test",
    entities: [User, Role],
    synchronize: true,
  });

  const users = await connection.manager.find(User, { relations: ["role"] });
  console.log(users);
}

main().catch(error => console.error(error));

在上面的示例中,我们定义了两个实体类UserRole,它们之间通过外键关联。在main函数中,我们使用find方法查询User实体,并通过relations选项指定要加载的关联实体role。这样,在查询结果中就会包含外键role的详细信息。

需要注意的是,关联加载可能会导致性能下降,特别是在加载大量数据时。因此,在使用关联加载时,我们需要权衡性能和数据传输量之间的平衡。

推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云云服务器CVM、腾讯云对象存储COS。

腾讯云数据库MySQL:https://cloud.tencent.com/product/cdb

腾讯云云服务器CVM:https://cloud.tencent.com/product/cvm

腾讯云对象存储COS:https://cloud.tencent.com/product/cos

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【nodejs】让nodejs像后端mvc框架(asp.net mvc)一orm篇【如EF般丝滑】typeorm介绍(8/8)

在使用nodejs开发过程中,刚好碰到需要做一个小工具,需要用到数据库存储功能。而我又比较懒,一个小功能不想搞一个nodejs项目,又搞一个后端项目。不如直接在nodejs里面把对数据库的操作也做掉。 结果百度一圈下来发现nodejs这边还都是比较原始的、类似后端的通过coneection连数据库,接着open,在写sql语句干嘛干嘛的。经过后端这么多年的脚手架工具熏陶,实在懒得写这些没营养的简单增删改查sql语句了。 typeorm github地址 typeorm github地址 遂通过baidu、google找到了typeorm这个orm框架。果然不错,作者自己也说大量参考了如entityframework、hibernate、dapper等等众多orm框架。吸收了各家之所长。 更多介绍和各种示例可以参考它的demo项目,基本每个数据库都有一个demo,然后对特性也基本都介绍到的。 比如mongodb如何映射复杂对象,关系型数据怎么弄级联删除之类的功能

02
领券