Javascript 如何在多通关系中插入数据?内斯特

Javascript 如何在多通关系中插入数据?内斯特,javascript,orm,nestjs,Javascript,Orm,Nestjs,我是ORM系统的新手,我正在尝试插入一个绑定了对象“pseudo”的数据“Mark” 这是我的实体, 伪: @Entity() 导出类伪实体{ @PrimaryGeneratedColumn() id:编号; @列({unique:true}) 伪:字符串; @列({默认值:1}) 应用程序版本:编号; @列({default:-1}) 上次计算的分数:数字; @列({默认值:1}) nb_请求:编号; @列({default:-1}) 最后一次计算上的标记:数字; @OneToMany(类型=

我是ORM系统的新手,我正在尝试插入一个绑定了对象“pseudo”的数据“Mark”

这是我的实体, 伪:

@Entity()
导出类伪实体{
@PrimaryGeneratedColumn()
id:编号;
@列({unique:true})
伪:字符串;
@列({默认值:1})
应用程序版本:编号;
@列({default:-1})
上次计算的分数:数字;
@列({默认值:1})
nb_请求:编号;
@列({default:-1})
最后一次计算上的标记:数字;
@OneToMany(类型=>标记,标记=>标记)
标记:标记[];
}
和马克:

@Entity()
导出类标记实体{
@PrimaryGeneratedColumn()
int:数字;
@列({type:'datetime'})
提交日期:日期;
@第()列
标记:数字;
@许多酮(
type=>Pseudo,
pseudo=>pseudo,
)
伪:伪;
}
这是我插入数据的服务:

@Injectable()
出口类标记服务{
构造函数(私有伪服务:伪服务){}
异步邮戳(伪:字符串,标记:数字){
等待这个.pseudoService.findPseudo(pseudo)。然后(
p=>
getConnection()
.createQueryBuilder()
.插入()
.进入(马克)
.价值观([
{
马克:马克,
伪:p,,
},
]),
);
}
}
我成功插入了伪标记,但未插入标记:/

你能帮我吗


提前谢谢

我没有试过,但我想这应该行得通:

从'@nestjs/common'导入{Injectable};
从“../entity/Pseudo.entity”导入{PseudoEntity as Pseudo};
从“../entity/Mark.entity”导入{MarkEntity as Mark};
从“typeorm”导入{getConnection};
@可注射()
导出类伪服务{
异步邮戳(markInput:number,pseudoInput:string){
设标记=新标记();
mark.mark=markInput;
mark.submission_date=date.now();
mark.pseudo=await-repository.findOne({pseudo:pseudoInput});
等待getConnection().manager
.保存(标记)
。然后(标记=>{
console.log(“标记已保存,标记id为”,标记id为);
});
}
//....
}

如果在数据库中找不到此伪输入的伪输入,您可能应该添加一个检查。

首先,您应该对您的实体进行一些轻微的更改:

@OneToMany(type=>Mark,marks=>marks.pseudo)
标记:标记[];
@许多酮(
type=>Pseudo,
pseudo=>pseudo.marks,
)
伪:伪;
完成上述更改后,使用注入的
伪存储库
查询和更新所需的
伪存储库
:(更多信息)

@Injectable()
出口类标记服务{
构造函数(@InjectRepository(Pseudo)私有只读pseudoRepository:Repository){}
异步邮戳(标记:数字,伪:伪):承诺{
设_标记=新标记();
马克。马克=马克;
mark.pseudo=wait pseudoRepository.findOne({pseudo});
等待此.pseudoRepository.save(_标记)
}
}

谢谢您的帮助:)在最后一行代码中,您是指markRepository.save(mark)吗?要使用@InjectRepository,我是否必须导入模块中的某些内容?因为我有这个错误<代码>嵌套无法解析MarkService(?,MarkEntityRepository,PseudoService)的依赖项。请确保索引[0]处的参数PseudoEntityRepository在PseudoModule上下文中可用。是的,请阅读我在文章中附加的链接中的更多信息
@Injectable()
export class MarkService {
    constructor(@InjectRepository(Pseudo) private readonly pseudoRepository: Repository<Pseudo>) { }

    async postMark(mark: number, pseudo: Pseudo): Promise<void> {
    
        let _mark = new Mark();

        mark.mark = mark;

        mark.pseudo = await pseudoRepository.findOne({ pseudo });

        await this.pseudoRepository.save(_mark)
    }
}