Удалить ключ из полезной нагрузки - PullRequest
0 голосов
/ 07 мая 2020

Я хочу удалить ключевой team_id из следующего ответа:

{
  "id": 14,
  "name": "Angel Stadium of Anaheim",
  "opened": "1966-04-19T00:00:00.000Z",
  "capacity": 45517,
  "location": "Anaheim, California",
  "team_id": "95cbbe2a",
  "team": {
    "id": "95cbbe2a",
    "name": "Los Angeles Angels",
    "established_in": 1961,
    "league": "American League",
    "division": "West Division",
    "logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
    "number_of_titles":1
  }
}

Код, который я использую сейчас, получает все данные с мест, сначала мне нужны все они, но в окончательный ответ Я хотел бы опустить ключ team_id:

    const venues = await connection(VENUE_TABLE)
      .limit(LIMIT_PER_PAGE)
      .offset((page - 1) * LIMIT_PER_PAGE)
      .select('*')
      .orderBy('name');

    const venuesWithTeam = await venues.reduce(
      (promise, element) =>
        promise.then(async (result) =>
          result.concat({
            ...element,
            team: await connection('team')
              .where('id', element.team_id)
              .select('*')
              .first(),
          })
        ),
      Promise.resolve([])
    );

Желаемое поведение будет:

{
  "id": 14,
  "name": "Angel Stadium of Anaheim",
  "opened": "1966-04-19T00:00:00.000Z",
  "capacity": 45517,
  "location": "Anaheim, California",
  "team": {
    "id": "95cbbe2a",
    "name": "Los Angeles Angels",
    "established_in": 1961,
    "league": "American League",
    "division": "West Division",
    "logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
    "number_of_titles":1
  }
}

Что я могу сделать, чтобы это произошло?

Ответы [ 3 ]

2 голосов
/ 07 мая 2020

Вы можете использовать деструктуризацию объекта для удаления определенных c ключей из объекта

const venueWithTeamId = {
  "id": 14,
  "name": "Angel Stadium of Anaheim",
  "opened": "1966-04-19T00:00:00.000Z",
  "capacity": 45517,
  "location": "Anaheim, California",
  "team_id": "95cbbe2a",
  "team": {
    "id": "95cbbe2a",
    "name": "Los Angeles Angels",
    "established_in": 1961,
    "league": "American League",
    "division": "West Division",
    "logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
    "number_of_titles":1
  }
};

const { team_id, ...withoutTeamId } = venueWithTeamId;
console.log(withoutTeamId);
1 голос
/ 07 мая 2020

Используйте Object.assign, чтобы создать новый объект из существующего, а затем используйте delete, чтобы удалить ключ

let data = {
  "id": 14,
  "name": "Angel Stadium of Anaheim",
  "opened": "1966-04-19T00:00:00.000Z",
  "capacity": 45517,
  "location": "Anaheim, California",
  "team_id": "95cbbe2a",
  "team": {
    "id": "95cbbe2a",
    "name": "Los Angeles Angels",
    "established_in": 1961,
    "league": "American League",
    "division": "West Division",
    "logo": "https://upload.wikimedia.org/wikipedia/commons/7/79/Los_Angeles_Angels_of_Anaheim_Insignia.svg",
    "number_of_titles": 1
  }
}

let newData = Object.assign({}, data);
delete newData.team_id;
console.log(newData)
0 голосов
/ 07 мая 2020

Вы можете просто удалить свойство из объекта

delete obj.team_id

Мы делаем это все время с доступным loda sh / подчеркиванием, поэтому это

return _.omit(obj, 'team_id')

Что позволяет вам для получения желаемого результата без изменения оригинала.

...