Фильтрация удаленных результатов перед возвратом вывода пользователю JS - PullRequest
0 голосов
/ 04 февраля 2020

Прежде чем вернуть вывод с моего сервера, я пытаюсь отфильтровать все удаленные части.

Структура моей схемы может быть описана следующим образом:

results: 
   - result: 
       -item: 
          -itemReservations: 
               -reservationPart: 
                   -isDeleted: true
               -reservationPart: 
                   -isDeleted: false
               -reservationPart: 
                   -isDeleted: false

Я добавил приведенный ниже код, однако возвращаемый результат по-прежнему содержит результаты, где part.isDeleted равно true.

...
.then(results =>
    results.map(result => {
      if (result.item.itemReservations.length > 0) {
        result.item.itemReservations.map(
          itemReservation => {
            itemReservation.reservationParts = itemReservation.reservationParts.filter(
              part => !part.isDeleted
            );
            return itemReservation;
          }
        );
      }
      return result;
    })
  ).then(filteredResults => ...)

1 Ответ

1 голос
/ 04 февраля 2020

Проблема была указана от c до sequelize.js - result был объектом сиквелиза, а не json объектом:

Добавление

const jsonResult = result.toJSON();

решил проблему.

Правильный код:

.then(results =>
    results.map(result => {
      const jsonResult = result.toJSON();
        jsonResult.item.itemReservations.map(
          itemReservation => {
            itemReservation.reservationParts = itemReservation.reservationParts.filter(
              part => !part.isDeleted
            );
            return itemReservation;
          }
        );
      return jsonResult;
    })
  ).then(filteredResults => ...)

Также, как подсказывает другой ответ - if (result.item.itemReservations.length > 0) бесполезен. [].map(...) возвращает []

...