Node.js 如何使用TypeForm实体对系统建模
我正在使用typeORM创建一个express应用程序,以帮助将我的对象映射到我的数据库。我希望创建一个追随者系统。我的用户实体有一个基本布局,如下所示。但是,这将创建两个联接表。我只希望有一个表沿着“user\u follower\u user”的行,其中userId\u 1跟在userId\u 2后面。我想能够保持为每个用户以及追随者的数量帐户的数量。这可能吗?我还没有完全理解代码中发生了什么Node.js 如何使用TypeForm实体对系统建模,node.js,postgresql,express,typeorm,Node.js,Postgresql,Express,Typeorm,我正在使用typeORM创建一个express应用程序,以帮助将我的对象映射到我的数据库。我希望创建一个追随者系统。我的用户实体有一个基本布局,如下所示。但是,这将创建两个联接表。我只希望有一个表沿着“user\u follower\u user”的行,其中userId\u 1跟在userId\u 2后面。我想能够保持为每个用户以及追随者的数量帐户的数量。这可能吗?我还没有完全理解代码中发生了什么 import { Entity, PrimaryGeneratedColumn, Column,
import { Entity, PrimaryGeneratedColumn, Column, ManyToMany, JoinTable, RelationCount } from 'typeorm';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstName: string;
@Column()
lastName: string;
@Column()
email: string;
@Column()
password: string;
@Column()
bio: string;
@ManyToMany( type => User, user => user.followers )
@JoinTable()
following: User[]
@ManyToMany( type => User, user => user.following )
@JoinTable()
followers: User[]
@RelationCount((user: User) => user.followers)
followersCount: number;
@RelationCount((user: User) => user.following)
followingCount: number;
}
运行代码后,我的数据库架构如下所示:
如上所述,我觉得只需要一张桌子。尽管我对使用此ORM的追随者系统的其他合理模式持开放态度。您的代码可以工作,但将追随者保留在一个数组中可能会在一段时间后变得非常糟糕。 查询数组更困难,也需要更长的时间。而且,您不能保留一些重要信息,如使用模式跟踪的时间。
您要做的是,创建另一个实体并保留follower和follower的id。像这个:
import { Entity, Column, CreateDateColumn } from 'typeorm';
@Entity()
export class Subscription {
@Column()
userId: number;
@Column()
folowingId: number;
@CreateDateColumn()
createdAt: Date;
}
通过查询此实体,现在可以轻松获得追随者或所有追随者的数量。您的代码可以工作,但将追随者保留在数组中可能会在一段时间后变得非常糟糕。 查询数组更困难,也需要更长的时间。而且,您不能保留一些重要信息,如使用模式跟踪的时间。
您要做的是,创建另一个实体并保留follower和follower的id。像这个:
import { Entity, Column, CreateDateColumn } from 'typeorm';
@Entity()
export class Subscription {
@Column()
userId: number;
@Column()
folowingId: number;
@CreateDateColumn()
createdAt: Date;
}
通过查询这个实体,现在可以很容易地获得追随者或所有追随者的数量