Отображать только определенные ключи в ответе json

Я создаю простой API с экспрессом и sqlite. Я хочу, чтобы мой запрос GET отображал только определенные ключи в каждом объекте JSON, который отображается в ответ.

Ниже мой текущий код:

router.get('/cars', (req, res) => {
    // TODO GET all cars
    try {
        let sql = 'SELECT * FROM cars'
        let params = []
    
        db.all(sql, params, (err, rows) => {
            if (err) {
              res.status(400).json({"error":err.message});
              return;
            }
            else {
                res.status(200).json({
                    message: 'success',
                    data: rows
                })
            }
        });
    } catch(error) {
        console.info(error.message.red)

        res.status(500).json({
            message: 'Not found.'
        })
    }
})

Прямо сейчас в ответе будут отображаться записи из базы данных со всеми ключами и их значениями. Это выглядит так:

{
  "message": "success",
  "data": [
    [
      {
        "car_id": 48,
        "email": "[email protected]",
        "name": "Hernando",
        "year": 2015,
        "make": "Acura",
        "model": "TLX",
        "racer_turbo": 0,
        "racer_supercharged": 0,
        "racer_performance": 2,
        "racer_horsepower": 2,
        "car_overall": 4,
        "engine_modifications": 4,
        "engine_performance": 0,
        "engine_chrome": 2,
        "engine_detailing": 4,
        "engine_cleanliness": 4,
        "body_frame_undercarriage": 2,
        "body_frame_suspension": 4,
        "body_frame_chrome": 2,
        "body_frame_detailing": 2,
        "body_frame_cleanliness": 2,
        "mods_paint": 2,
        "mods_body": 2,
        "mods_wrap": 0,
        "mods_rims": 4,
        "mods_interior": 4,
        "mods_other": 4,
        "mods_ice": 6,
        "mods_aftermarket": 2,
        "mods_wip": 0,
        "mods_overall": "4",
        "score": 62
      },
...

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

Я пробовал использовать цикл forEach так

if (err) {
  res.status(400).json({'error':err.message});
  return;
} else {
  res.json({
    message:'success',
    data: rows.forEach((row) => {
      row.car_id,
      row.email,
      row.name,
      row.year,
      row.make,
      row.model,
      row.score
    }
  })
}

Но он не показывает данные, но я также не получаю никаких ошибок в своей консоли.

Ожидаемый результат таков:

"message": "success",
  "data": [
    [
      {
        "car_id": 48,
        "email": "[email protected]",
        "name": "Hernando",
        "year": 2015,
        "make": "Acura",
        "model": "TLX",
        "score": 62
      },
...

Любая помощь очень ценится.

Вы проверяли rows перед тем, как forEach возвращать данные?

VLDCNDN 03.05.2022 02:05

@VLDCNDN Да, данные возвращаются нормально без foreach

Stephen 03.05.2022 02:14
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
2
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

попробуй это

let sql = 'SELECT car_id,email,name,year,make,model,score FROM cars'

Это помогло! Спасибо @Serge

Stephen 03.05.2022 04:41

Другие вопросы по теме