gpt4 book ai didi

node.js - 如何删除多行 typeorm - postgresql & node.js(typescript)

转载 作者:行者123 更新时间:2023-12-04 12:58:33 24 4
gpt4 key购买 nike

嗨, friend ,这是我的函数,它获取一组 id 我想一次性删除行而不是在循环中运行,并且找不到解决方案。
将不胜感激帮助。

async remove(ids: DeleteEmployeeAnswerDTO): Promise<boolean> {
if (ids.employeeAnswersIds.length) {
for (const id of ids.employeeAnswersIds) {
await EmployeeAnswers.delete(id.id);
}
}
return true;
}

最佳答案

如果您的表只有一个 ID column 那么你应该能够传递一个数组 ID s:

await EmployeeAnswers.delete(ids.employeeAnswersIds);
您也可以指定多个 ID s 在您的 where 子句中使用 In :
await EmployeeAnswers.delete({ id: In(ids.employeeAnswersIds) });
但是,如果您处理具有复合主键的表,就像我的情况一样,以下示例可能是您的解决方案。我对这个答案并不着迷,但这是我如何使用 DeleteQueryBuilder 克服这个问题的方法( docs ):
async remove(ids: DeleteEmployeeAnswerDTO): Promise<boolean> {
if (ids.employeeAnswersIds.length) {
const deleteQueryBuilder = EmployeeAnswer.createQueryBuilder().delete()

const idClauses = ids.map((_, index) => `ID = :id${index}`)
const idClauseVariables = ids.reduce((value: any, id, index) => {
value[`id${index}`] = id
return value
}, {})

await deleteQueryBuilder.where(idClauses.join(' OR '), idClauseVariables).execute()
}
return true;
}

关于node.js - 如何删除多行 typeorm - postgresql & node.js(typescript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62679088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com