如何使用 nodejs 和 sequelize-typescript 创建一对多关系记录
how to create one to many relational record using nodejs and sequelize-typescript
我正在使用 sequelize-typescript 学习 Nodejs,我的任务是为一对多关系创建 crud 系统。我搜索了很多但找不到我的代码中有什么问题。我使用 postman 成功获取了记录,但是当我 post 下面提到 json 只有父记录已设置时无法正确创建记录。
{
"mainitemcode": "00013",
"mainitemcodeDetails": "00013",
"disabled": false,
"description": "any discription",
"finishGoodsRecipeList": [
{
"assembling_master_code": "00013",
"mainitemcode": "00013",
"subitemcode": "00015",
"description": "null",
"qty": 1.000000,
"wastage_qty": 0.000000
},
{
"assembling_master_code": "00013",
"mainitemcode": "00011",
"subitemcode": "00014",
"description": "null",
"qty": 1.000000,
"wastage_qty": 0.000000
}
]
}
finishGoodsRecipeListService:
findOne(code: string): Promise<FinishGoodsRecipeMaster> {
return this.FinishGoodsRecipeMasterModel.findOne({
include:[FinishGoodsRecipeList,Product],
where:{mainitemcode:code}
});
}
create(CreatefinishGoodsRecipeListDto: CreatefinishGoodsRecipeListDto): Promise<FinishGoodsRecipeMaster> {
let t:any= CreatefinishGoodsRecipeListDto
return this.FinishGoodsRecipeMasterModel.create(t)
}
FinishGoodsRecipeMaster:
@Table({
tableName: 'assembling_master',
timestamps: true})
export class FinishGoodsRecipeMaster extends Model {
// @PrimaryKey
@Column({autoIncrement: true})
idno: number;
@PrimaryKey
@Column
mainitemcode: string;
@Column
disabled: number;
@Column
description: string;
@CreatedAt
@Column({ field: 'created_at' })
createdAt: Date;
@UpdatedAt
@Column({ field: 'updated_at' })
updatedAt: Date;
@DeletedAt
@Column({ field: 'deleted_at' })
deletedAt: Date;
@HasOne(() => Product, 'code')
mainitemcodeDetails:Product;
@HasMany(() => FinishGoodsRecipeList)
finishGoodsRecipeList: FinishGoodsRecipeList[];
}
FinishGoodsRecipeList:
@Table({
tableName: 'assembling_list',
timestamps: true})
export class FinishGoodsRecipeList extends Model {
@PrimaryKey
@Column
idno: number;
@ForeignKey(() => FinishGoodsRecipeMaster)
@Column
mainitemcode: string;
@Column
subitemcode: string;
@Column
description: string;
@Column
qty: number;
@CreatedAt
@Column({ field: 'created_at' })
createdAt: Date;
@UpdatedAt
@Column({ field: 'updated_at' })
updatedAt: Date;
@DeletedAt
@Column({ field: 'deleted_at' })
deletedAt: Date;
@BelongsTo(() => FinishGoodsRecipeMaster)
FinishGoodsRecipeMaster: FinishGoodsRecipeMaster;
}
您的 .create()
调用还需要一个 include
子句。
return this.FinishGoodsRecipeMasterModel.create(t, {
include: ...
})
这里是相关文档:Creating With Associations
我正在使用 sequelize-typescript 学习 Nodejs,我的任务是为一对多关系创建 crud 系统。我搜索了很多但找不到我的代码中有什么问题。我使用 postman 成功获取了记录,但是当我 post 下面提到 json 只有父记录已设置时无法正确创建记录。
{
"mainitemcode": "00013",
"mainitemcodeDetails": "00013",
"disabled": false,
"description": "any discription",
"finishGoodsRecipeList": [
{
"assembling_master_code": "00013",
"mainitemcode": "00013",
"subitemcode": "00015",
"description": "null",
"qty": 1.000000,
"wastage_qty": 0.000000
},
{
"assembling_master_code": "00013",
"mainitemcode": "00011",
"subitemcode": "00014",
"description": "null",
"qty": 1.000000,
"wastage_qty": 0.000000
}
]
}
finishGoodsRecipeListService:
findOne(code: string): Promise<FinishGoodsRecipeMaster> {
return this.FinishGoodsRecipeMasterModel.findOne({
include:[FinishGoodsRecipeList,Product],
where:{mainitemcode:code}
});
}
create(CreatefinishGoodsRecipeListDto: CreatefinishGoodsRecipeListDto): Promise<FinishGoodsRecipeMaster> {
let t:any= CreatefinishGoodsRecipeListDto
return this.FinishGoodsRecipeMasterModel.create(t)
}
FinishGoodsRecipeMaster:
@Table({
tableName: 'assembling_master',
timestamps: true})
export class FinishGoodsRecipeMaster extends Model {
// @PrimaryKey
@Column({autoIncrement: true})
idno: number;
@PrimaryKey
@Column
mainitemcode: string;
@Column
disabled: number;
@Column
description: string;
@CreatedAt
@Column({ field: 'created_at' })
createdAt: Date;
@UpdatedAt
@Column({ field: 'updated_at' })
updatedAt: Date;
@DeletedAt
@Column({ field: 'deleted_at' })
deletedAt: Date;
@HasOne(() => Product, 'code')
mainitemcodeDetails:Product;
@HasMany(() => FinishGoodsRecipeList)
finishGoodsRecipeList: FinishGoodsRecipeList[];
}
FinishGoodsRecipeList:
@Table({
tableName: 'assembling_list',
timestamps: true})
export class FinishGoodsRecipeList extends Model {
@PrimaryKey
@Column
idno: number;
@ForeignKey(() => FinishGoodsRecipeMaster)
@Column
mainitemcode: string;
@Column
subitemcode: string;
@Column
description: string;
@Column
qty: number;
@CreatedAt
@Column({ field: 'created_at' })
createdAt: Date;
@UpdatedAt
@Column({ field: 'updated_at' })
updatedAt: Date;
@DeletedAt
@Column({ field: 'deleted_at' })
deletedAt: Date;
@BelongsTo(() => FinishGoodsRecipeMaster)
FinishGoodsRecipeMaster: FinishGoodsRecipeMaster;
}
您的 .create()
调用还需要一个 include
子句。
return this.FinishGoodsRecipeMasterModel.create(t, {
include: ...
})
这里是相关文档:Creating With Associations