我试图避免执行第二次查询来保存带有关系的行。用户可以创建多个事件。任何用户都将通过auth,我可以访问userID。我不完全理解人际关系。看起来,我应该能够在链接到用户ID的类型编号上建立关系,而不是整个用户对象。
实体是
import {
Entity,
PrimaryGeneratedColumn,
Column,
JoinColumn,
ManyToOne,
} from 'typeorm';
import { User } from './User';
@Entity()
export class Event {
@PrimaryGeneratedColumn()
id: number;
@Column()
eventName: string;
@ManyToOne(() => User)
@JoinColumn()
createdBy: User;
}
export default Event;主计长
const userRepository = AppDB.getRepository(User);
const EventRepository = AppDB.getRepository(Event);
export async function addEvent(userID: number, eventObject: EventObject) {
const u = await userRepository.findOneByOrFail({ id: userID }); //Trying to Remove <---
const e = new Event();
Object.assign(e, eventObject);
e.eventStart = new Date(eventObject.eventStart);
e.eventEnd = new Date(eventObject.eventEnd);
e.createdBy = u; //e.createBy = userID. <----
await EventRepository.save(e);
return e;
}发布于 2022-08-09 05:03:48
目前,我无法测试这一点,但是我这样做:您可以为JoinColumn添加一个名称,并添加一个具有这个确切名称的列。这样,您就不需要获得实体,并且只需设置id即可。
@ManyToOne(() => User)
@JoinColumn({name: 'createdById')
createdBy: User;
@Column()
createdById: number; // use the type of the User's entity primary keyconst EventRepository = AppDB.getRepository(Event);
export async function addEvent(userID: number, eventObject: EventObject) {
const e = new Event();
Object.assign(e, eventObject);
e.eventStart = new Date(eventObject.eventStart);
e.eventEnd = new Date(eventObject.eventEnd);
e.createdById = userID;
await EventRepository.save(e);
return e;
}https://stackoverflow.com/questions/73285235
复制相似问题