Запрос отношения «многие ко многим» на основе значения

#node.js #typeorm #node.js-typeorm

Вопрос:

В настоящее время у меня есть отношения «многие ко многим» между сущностями. Транзакция содержит много людей, а Человек содержит много Транзакций. Я пишу запрос для фильтрации транзакций, чтобы транзакции содержали имя человека. Проблема, с которой я сталкиваюсь, заключается в том, что когда я фильтрую по имени, это удаляет другого человека из транзакции.

Пример:

 {
        "id": 1,
        "txnDate": "2021-03-09T12:40:26.000Z",
        "persons": [
            {
                "id": 1,
                "name": "Bill"
            },
            {
                "id": 2,
                "name": "Jen"
            }
        ]
},
{
        "id": 2,
        "txnDate": "2021-03-09T12:40:26.000Z",
        "persons": [
            {
                "id": 2,
                "name": "Jen"
            },
            {
                "id": 3,
                "name": "Bob"
            }
        ]
},
 

Мой текущий запрос таков:

 query.leftJoinAndSelect('transaction.persons', 'persons')
     .andWhere('persons.name = :name', { name });
 

где name находится строка. Если я установлю name= Bill , это приведет к:

 {
        "id": 1,
        "txnDate": "2021-03-09T12:40:26.000Z",
        "persons": [
            {
                "id": 1,
                "name": "Bill"
            },
        ]
    },
 

Однако я хочу, чтобы при запросе по имени это приводило к:

 {
        "id": 1,
        "txnDate": "2021-03-09T12:40:26.000Z",
        "persons": [
            {
                "id": 1,
                "name": "Bill"
            },
            {
                "id": 2,
                "name": "Jen"
            }
        ]
    },
 

Я действительно застрял, и мне были бы интересны любые идеи о том, как это решить

Текущий стек: Nodejs, TypeORM, TypeScript