首页 > 解决方案 > TypeORM:如何在多对一关系中查找不匹配的记录?

问题描述

我有一个名为 Orders 的表,它与 OrderHistory 具有多对一关系,与 OrderHistoryEvents 具有多对一关系

所以一个订单可能看起来像(简化的):

{
  id: 234,
  history: [
    { timestamp: 12345, event: { event_name: 'ORDER_CREATED' } },
    { timestamp: 12345, event: { event_name: 'ORDER_PREPARED' } },
  ],
},
{
  id: 235,
  history: [
    { timestamp: 12345, event: { event_name: 'ORDER_CREATED' } },
    { timestamp: 23456, event: { event_name: 'NOT_PREPARED_WARNING_SENT' } },
  ],
}

我需要找到订单

  1. 没有准备好(没有 ORDER_PREPARED 状态)并且
  2. 未发送警告(没有 NOT_PREPARED_WARNING_SENT 状态)

换句话说(或用 DeMorgan 的话说),我需要过滤掉具有 ORDER_PREPARED 或 NOT_PREPARED_WARNING_SENT(或两者)的订单。

我怎样才能写一个查询来完成这个?

标签: typeorm

解决方案


推荐阅读