类型ORM |如何创建与存储库而不是 EntityManager 的多对多关系

typeORM | how to create a many to many relation with repository instead of EntityManager

提问人:Sherif eldeeb 提问时间:11/10/2023 更新时间:11/10/2023 访问量:14

问:

我之间有很多对多的关系,我在这里有两个问题usersstores

1- 没有关于如何使用存储库创建关系的工作示例

2- 使用 EntityManager 有效,但我必须在插入商店之前获取相应的用户,我们可以这样做吗?user.id

方法1:使用存储库

let storesRepository = dataSource.manager.getRepository('stores');
let usersRepository = ...

let user = await usersRepository.findOne(...)
let data = req.body
data.users=[user] //or may be data.users=[1,2,3]


// stores are created, but users_stores doesn't created
storesRepository.insert(data);

方法二:使用 EntityManager

let store = new Store();
let user = await usersRepository.findOne(...)

// this works, but why we don't just use the user's Id
// that is received with the request params instead of making a db call to fetch the users?
store.users=[user]
store.otherProps="something"
datasource.manager.save(store)
nestjs typeorm nestjs-typeorm

评论


答:

0赞 Sherif eldeeb 11/10/2023 #1

解决方案 1 - 使用而不是 2 - 使用而不是.save()insert(){user: {id: '...'}{user: 'id'}

所以,完整的代码是:

let storesRepository = dataSource.manager.getRepository('stores');
let usersRepository = ...

// this query is no longer needed
// let user = await usersRepository.findOne(...)
let data = req.body
data.users=[{id: 1}]


// instead of.insert()
storesRepository.save(data);