如何在该方法中节省餐费? 在服务(expenses.service.ts)中识别它的方法如下,但是当我尝试保存它时,它会像费用(父实体)一样保存。
async create(expense: ExpenseDto) {
let newExpense = new Meal();
newExpense.lunch = (expense as Meal).lunch;
await this.expenseRepository.save(newExpense);
return this.expenseRepository.findOne({where: { id: newExpense.id },});
}
我有这个实体和他各自的 Dto。
@Entity({ name: 'expenses' })
@TableInheritance({
column: {
type: 'varchar',
name: 'expense_type',
},
})
export class Expense {
@PrimaryGeneratedColumn()
id: number;
...
...
}
@ChildEntity()
export class Meal extends Expense {
@Column({ default: true })
lunch: boolean;
}
问题是,每当我去保存时,它都会保存为费用(根据我设置的参数)而不是餐食。 通过此输入:
{
...
"expenseType": "MEAL",
"lunch": false
}
输出总是这样的。
{
"expenseType": "DEFAULT"
}
我尝试在该方法中根据 ExpenseType 变量(用现有类型的枚举填充)检查费用类型,并从那里分配子实体的相应数据。当我保存时,它总是像父实体一样保存。