Таргетинг на определенный элемент массива с деструктуризацией назначения - PullRequest
0 голосов
/ 11 февраля 2019

Я использую некоторую деструктуризацию присваиваний в моем бэкэнде MongoDB / Node для обработки некоторой постобработки.Я просто пытаюсь понять, как работает эта деструктуризация, и если, в случае массива из нескольких элементов и вложенных массивов, могу ли я ввести элемент, на который я хочу ориентироваться.

Возьмем, к примеру, этот код:

    services: [
      ,
      {
        history: [...preSaveData]
      }
    ]
  } = preSaveDocObj;

Я предполагаю, что "," в "services" для приведенного выше кода по умолчанию будет смотреть на первый элемент в массиве.Правильно?

Теперь, если у меня есть структура документа, которая выглядит следующим образом (см. Ниже), и я знаю, что хочу нацелиться на элемент «services», где «service» равен «typeTwo», как быЯ делаю это?:

 {
   _id: 4d39fe8b23dac43194a7f571,
   name: {
     first: "Jane",
     last: "Smith"
   }
   services: [
    {
     service: "typeOne",
     history: [ 
       { _id: 121, 
         completed: true,
         title: "rookie"
       },
       { _id: 122, 
         completed: false,
         title: "novice"
       } 
      ]
     },
     {
      service: "typeTwo",
      history: [ 
       { _id: 135, 
         completed: true,
         title: "rookie"
       },
       { _id: 136, 
         completed: false,
         title: "novice"
       } 
      ]
     }
   ]
 }

Как я могу отредактировать этот код (см. Ниже) так, чтобы он специально предназначался для массива "services", где "service" равен "typeTwo"?

    services: [
      ,
      {
        history: [...preSaveData]
      }
    ]
  } = preSaveDocObj;

1 Ответ

0 голосов
/ 11 февраля 2019

Не переусердствуйте, просто find:

 const { history: [...preSavedData] } = doc.services.find(it => it.serice === "typeTwo");
...