TypeORM: Ненужное предложение AND добавляется в последний запрос при выполнении операции DELETE. - PullRequest
0 голосов
/ 20 апреля 2020

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

Типовая версия: последняя (0.2.24)

1 Ответ

0 голосов
/ 22 апреля 2020

Это происходило потому, что для таблицы Edges первичный составной ключ равен (from_node, to_node).

...