Возникли проблемы с доступом к элементу в объекте, возвращенном из запроса get в Express - PullRequest
1 голос
/ 31 мая 2019

У меня есть запрос get, возвращающий массив объектов, взятых из базы данных, используя Knex, я хочу вернуть их, используя .map, предоставляя им доступные элементы.Но последний элемент как таковой - это sum (), поэтому я просто не понимаю, как получить к нему доступ.Вероятно, очень простая проблема, но я просто не понимаю.

Моя текущая функция, добавленная ниже, возвращает все, что я хочу, кроме суммы.то есть ссылка на область как res.area работает.Но request возвращает сумму как 'sum (areas)': 20. Поэтому я думаю, мне интересно, как ссылаться на сумму, у которой нет имени переменной

router.get("/search/:param",function(req,res,next)
{
  req.database.from('animals')
  .select('animals.name', 'areas.lat', 'areas.lng', req.params.area)
  .sum(req.params.area).groupBy('animals.name')
  .leftJoin('areas','req.params.area', 'areas.area')
  .then((rows) => {
    const x = mapFunction(rows)
    res.send({query: req.params.area, result: x})
  })
})

function mapFunction(results) {
  return results.map((res) => 
  ({area: res.area, lat: res.lat, lng: res.lng, total: res.????}))
}

1 Ответ

0 голосов
/ 01 июня 2019

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

knex
  .from('animals')
  .select('animals.name', 'areas.lat', 'areas.lng', req.params.area)
  .sum(`${req.params.area} as areaSum`)

Таким образом, сумма доступна как areaSum в вашем результате.

...