Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 如何正确创建具有多个关系的注册表?_Typescript_Sqlite_Typeorm - Fatal编程技术网

Typescript 如何正确创建具有多个关系的注册表?

Typescript 如何正确创建具有多个关系的注册表?,typescript,sqlite,typeorm,Typescript,Sqlite,Typeorm,我正在尝试保存一个有许多类别的产品。同时,一个类别可以有许多产品。因此,我认为最好的解决方案是使用多个关系对数据进行建模 当我尝试创建一个新产品时,出现了一个错误,说不可能使用空值插入一个新类别。最疯狂的是,我不需要创建新的类别,而是要将现有的类别分配给新产品 这是console返回的SQL消息: SQLITE\u约束:非空约束失败:category.name', errno:19, 代码:“SQLITE_约束”, 名称:“QueryFailedError”, 查询:'插入到“类别”(“id”、

我正在尝试保存一个有许多类别的产品。同时,一个类别可以有许多产品。因此,我认为最好的解决方案是使用多个关系对数据进行建模

当我尝试创建一个新产品时,出现了一个错误,说不可能使用空值插入一个新类别。最疯狂的是,我不需要创建新的类别,而是要将现有的类别分配给新产品

这是console返回的SQL消息:

SQLITE\u约束:非空约束失败:category.name',
errno:19,
代码:“SQLITE_约束”,
名称:“QueryFailedError”,
查询:'插入到“类别”(“id”、“父项id”、“名称”、“描述”、“创建数据”、“更新数据”)值(NULL、NULL、NULL、NULL、datetime(\'now\')、datetime(\'now\'))
根据我推断我的代码必须与next类似:

Product.ts

@Entity()
@唯一([“代码”])
出口类产品{
@PrimaryGeneratedColumn()
id:编号;
@纵队({
长度:20
})
代码:字符串;
@纵队({
长度:100
})
名称:字符串;
@第()列
描述:字符串;
@第()列
股票:编号;
@纵队({
类型:“真实”
})
价格:数量;
@第()列
公共价格:布尔值;
@第()列
公共:布尔;
@许多(类型=>Category,Category=>Category.products{
瀑布:对
})
@JoinTable()
类别:类别【】;;
}
Category.ts

@Entity()
出口类别{
@PrimaryGeneratedColumn()
id:编号;
@列({nullable:true})
父id:编号;
@第()列
@IsNotEmpty()
名称:字符串;
@第()列
description?:字符串;
@第()列
@CreateDateColumn()
createdAt:日期;
@第()列
@UpdateDateColumn()
更新日期:日期;
@ManyToMany(类型=>Product,产品=>Product.categories)
产品:产品【】;;
}
ProductController.ts(创建方法)

static create=async(请求:请求,响应:响应)=>{
const{categories,…data}=req.body
const categoryRepository=getRepository(Category);
const productRepository=getRepository(产品);
常数猫=[]
for(类别的常量id){
const cat=wait categoryRepository.find(id)
猫。推(猫)
}
const product=新产品();
for(数据中的常量索引){
产品[索引]=数据[索引]
}
product.categories=猫
试一试{
等待productRepository.保存(产品);
res.send(“产品成功创建”);
}捕捉(错误){
console.log(错误)
res.status(409).send('产品创建错误');
}
}
这是我用来通过Postman测试我的应用程序的JSON对象:

{
    "code": "1234",
    "name": "TESTING PRODUCT CREATION",
    "description": "Product sended through postman",
    "stock": "99",
    "price": "255.88",
    "public_price": true,
    "public": true,
    "categories": [1]
}
替换

wait categoryRepository.find(id)

await categoryRepository.findOne(id)
find
将返回
数组中的项