显示唯一键而不是外键TypeOrm-MySql

显示唯一键而不是外键TypeOrm-MySql,mysql,node.js,foreign-keys,typeorm,unique-key,Mysql,Node.js,Foreign Keys,Typeorm,Unique Key,也许这是一个愚蠢的错误,但我需要理解这一点。我只是创建了一个简单的MySql DB一对一关系示例(使用TypeOrm),我阅读了TypeOrm.io上提供的相同文档 当我创建与用户和它显示的配置文件实体的一对一关系时,配置文件Id作为唯一键而不是用户表上的外键。你能不能在这里说清楚,只需要看一下一对一关系的文件 添加实体代码: User.ts import {Entity,PrimaryGeneratedColumn,Column,OneToOne ,JoinColumn} from "typ

也许这是一个愚蠢的错误,但我需要理解这一点。我只是创建了一个简单的MySql DB一对一关系示例(使用TypeOrm),我阅读了TypeOrm.io上提供的相同文档

当我创建与用户和它显示的配置文件实体的一对一关系时,配置文件Id作为唯一键而不是用户表上的外键。你能不能在这里说清楚,只需要看一下一对一关系的文件

添加实体代码:

User.ts

import {Entity,PrimaryGeneratedColumn,Column,OneToOne ,JoinColumn} from "typeorm";
import { Profile } from "./Profile";

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

  @Column()
  name: string;

  @OneToOne(() => Profile)
  @JoinColumn()
  profile: Profile;
}
Profile.ts

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity()
export class Profile {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  gender: string;

  @Column()
  photo: string;
}
用户表说明,这里我突出显示了****UNI*******,我想这里需要显示外键

mysql> desc user;
+-----------+--------------+------+-----+---------+----------------+
| Field   | Type     | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id      | int(11)    | NO | PRI   | NULL | auto_increment |
| name     | varchar(255) | NO  |  NULL | |
| profileId | int(11) |  YES | ****UNI***** | NULL |
+-----------+--------------+------+-----+---------+----------------+

谢谢。

profileId不应该是用户表中的PRI或主键,而应该是唯一的外键(因为它是一对一的关系),所以我认为这里没有任何错误。profileId不是主键,用户表中的主键是“id”。在您链接的文档中,profileId在用户表中显示为ForeignKey,我认为这里也是如此,所以没什么好担心的。@Osama您能阅读更新后的问题吗,这是我的错误,我更新了。一对一关系中的外键应该是唯一的,所以我想如果表说明显示的是UNI而不是FK,这不是问题。试着建立一个多对多关系,然后我想它会显示FK.profileId不应该是用户表中的PRI或主键,相反,它应该是唯一的外键(因为它是一对一的关系),所以我不认为这里有任何错误。profileId不是主键,用户表中的主键是“id”。在您链接的文档中,profileId在用户表中显示为ForeignKey,我认为这里也是如此,所以没什么好担心的。@Osama您能阅读更新后的问题吗,这是我的错误,我更新了。一对一关系中的外键应该是唯一的,所以我想如果表说明显示的是UNI而不是FK,这不是问题。尝试建立一个多对多关系,然后我认为它会显示FK。