Как выбрать два свойства из массива объектов в виде массива на knex? - PullRequest
0 голосов
/ 19 июня 2020

Я использую objextion. js и knex в проекте.

И я хочу выбрать два свойства из отношения и вложить их в массив. Это отношение содержит массив объектов со свойствами lat и lng , мне нужно получить массив массивов с lat и lng [[lat, lng]]. Насколько я понимаю, я должен выбрать поля и использовать raw из возражения, чтобы написать array_agg для хранения моих свойств, но я не понимаю, какой синтаксис должен быть.

In modifyGraph при выборе я получаю массив объектов с lng и lat

Мой запрос

const query = Restaurants
    .query()
    .withGraphFetched({
      schedule: true,
    })
    .skipUndefined();

  if (lat && lng) {
    query.withGraphFetched({
      areas: {
        area: {
          coordinates: true,
        },
      },
    }).modifyGraph('areas.area.coordinates', (builder) => {
      builder.select([
        'lat',
        'lng',
      ]);
    });
  }

  return query
    .andWhere(restFields)
    .andWhere('name', 'ilike', `%${search}%`);
};

Мой ответ от db

[
  AreasCoordinatesModel { lat: -46.653, lng: -23.543 },
  AreasCoordinatesModel { lat: -46.634, lng: -23.5346 },
]

И должен быть

[
 [ -46.653, -23.543 ],
 [ -46.634,-23.5346 ]
]

1 Ответ

0 голосов
/ 09 июля 2020

вы можете отобразить все объекты в массиве при возврате, используя

return (query
    .andWhere(restFields)
    .andWhere('name', 'ilike', `%${search}%`)).map(Object.values);

, и он вернется так, как вы хотели.

...