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)
。