我有一个 patch 方法,它发送一个包含 15 个对象的数组,我可以完美地打印这 15 个值,但如果我将它们放入entityManager.transaction 中,则只能得到 10 个值。当我发送请求时,Nestjs 服务器不返回任何内容,它完全崩溃了。
我将其发送到NestJs服务器
[
{
"id": 399,
"is_addon": true,
},
{
"id": 400,
"is_addon": false,
},
{
"id": 401,
"is_addon": false,
},
{
"id": 402,
"is_addon": false,
},
{
"id": 403,
"is_addon": false,
},
{
"id": 404,
"is_addon": false,
},
{
"id": 405,
"is_addon": false,
},
{
"id": 406,
"is_addon": false,
},
{
"id": 407,
"is_addon": false,
},
{
"id": 408,
"is_addon": false,
},
{
"id": 409,
"is_addon": false,
},
{
"id": 410,
"is_addon": false,
},
{
"id": 411,
"is_addon": false,
},
{
"id": 412,
"is_addon": false,
},
{
"id": 413,
"is_addon": false,
}
]
我在交易之外打印id
const promises = body.body.map(async (bodyConfirm, id) => {
console.log('id -> ', id);
await this.entityManager.transaction(async transactionalEntityManager => {
const incidentCurrent = await super.findOne({ id: bodyConfirm.id }, ['incident_management_users']);
const proContactUser = await this.userService.findOne({
user_name: incidentCurrent.incident_management_users.user_name,
telegram: Not(IsNull())
})
})
})
回复:
当我放入交易中时
const promises = body.body.map(async (bodyConfirm, id) => {
await this.entityManager.transaction(async transactionalEntityManager => {
--> console.log('id -> ', id);
const incidentCurrent = await super.findOne({ id: bodyConfirm.id }, ['incident_management_users']);
const proContactUser = await this.userService.findOne({
user_name: incidentCurrent.incident_management_users.user_name,
telegram: Not(IsNull())
})
})
})
回复:
我不知道为什么会这样,如果你知道原因请分享,谢谢!
我终于解决了上面的问题,我把交易放在map方法之外,然后一切都运行得很完美,我认为原因是因为我创建了太多交易
await this.entityManager.transaction(async transactionalEntityManager => {
await Promise.all(body.body.map(async (bodyConfirm) => {
// code here
})
)
})