TypeORM:在执行DELETE操作时,在最终查询中添加了不必要的AND子句



Edges表结构:id | from_node | to_node

操作:

node.id = 1
await getManager().delete(Edge, [{ from_node: node.id }, { to_node: node.id }]);

结果在:查询

DELETE FROM "edges" WHERE (("from_node" = $1 AND "to_node" = $2) OR ("from_node" = $3 AND "to_node" = $4)) -- PARAMETERS: [1,null,null,1]

而我想要的查询是:

query: DELETE FROM "edges" WHERE ("from_node" = $1) OR ("to_node" = $2) -- PARAMETERS: [1,1]

我不知道为什么要在结果查询中添加额外的AND子句。

另一方面,这个代码工作得非常好:

getManger()
.createQueryBuilder()
.delete()
.from(Edge)
.where([{ from_node: node.id }, { to_node: node.id }])
.execute();

有人能解释一下getManager().delete操作中实际结果和期望结果不匹配的原因吗?

DB:Postgres

Typeorm版本:最新(0.2.24(

之所以发生这种情况,是因为对于Edges表,主复合键是(from_node, to_node)

最新更新