显示唯一键而不是外键TypeOrm-MySql
也许这是一个愚蠢的错误,但我需要理解这一点。我只是创建了一个简单的MySql DB一对一关系示例(使用TypeOrm),我阅读了TypeOrm.io上提供的相同文档 当我创建与用户和它显示的配置文件实体的一对一关系时,配置文件Id作为唯一键而不是用户表上的外键。你能不能在这里说清楚,只需要看一下一对一关系的文件 添加实体代码: User.ts显示唯一键而不是外键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
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。