簡體   English   中英

如何 select 對象數組中的兩個屬性作為 knex 上的數組?

[英]How to select two properties from array of objects as array on knex?

我在項目中使用objextion.jsknex

我想 select 來自關系的兩個屬性並將它們嵌套在一個數組中。 該關系包含具有屬性latlng的 object 數組,我需要接收具有 lat 和 lng [[lat, lng]]的 arrays 數組。 我如何理解我必須 select 字段並使用原始反對來編寫 array_agg 以包含我的道具,但我不明白必須有什么語法。

在帶有select的 modifyGraph 中,我收到帶有lnglat的對象數組

我的請求

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 ]
]

您可以使用 map 返回數組中的所有對象

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

它會像你想要的那樣返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM