【发布时间】:2021-11-24 23:12:04
【问题描述】:
我有以下两个实体:
import { Entity, Column, PrimaryGeneratedColumn, ManyToOne } from "typeorm";
import { Activity } from "./";
@Entity()
export class Fare {
@PrimaryGeneratedColumn()
id: number;
@Column({unique: false,nullable: false})
name: string;
@Column({type: "float",unique: false,nullable: false})
price: number;
@ManyToOne(() => Activity, activity => activity.fares)
activity: Activity;
constructor(data ?: Partial<Fare>) {
Object.assign(this,data);
}
}
和
import { Entity, Column, OneToMany, PrimaryGeneratedColumn } from "typeorm";
import { Fare } from "./";
@Entity()
export class Activity {
@PrimaryGeneratedColumn()
id: number;
@Column({unique: true,nullable: false})
name: string;
@Column({unique: false,nullable: true})
description: string;
@OneToMany(() => Fare, (fare) => fare.activity, {cascade: true})
fares: Fare[];
constructor(data ?: Partial<Activity>){
Object.assign(this,data);
}
}
我想使用以下正文更新活动:
{"id":10, "name":"dddd", "fares":[{"id":5,"name":"jeune","price":20.0}]}
为此,我实现了以下服务:
import { singleton } from 'tsyringe'
import { getConnection, Timestamp } from 'typeorm';
import { Activity } from '../entities/';
import { ActivityRepository } from '../repositories'
import { Fare } from '../entities'
@singleton()
export class ActivityService {
constructor(private _activityRepository: ActivityRepository) {
this._activityRepository = getConnection("lasso").getCustomRepository(ActivityRepository);
}
public update = async (activity: Activity, id: number) => {
const updatedActivity = await this._activityRepository
.createQueryBuilder()
.update(Activity)
.set(activity)
.where("id = :id", { id: id })
.execute();
return updatedActivity;
}
};
运行我的更新请求时,我收到以下错误:
(node:204854) UnhandledPromiseRejectionWarning: Error: Cannot query across one-to-many for property fares
我读过this post,这似乎是相关的,但不幸的是它没有帮助。你知道如何解决这个错误吗?
【问题讨论】:
标签: typeorm