Typeorm Postgis 按最近点排序

Typeorm Postgis order by nearest Point

我有一个带有一堆点的 postgis 数据库,我想按照到我自己位置(经度和纬度)的距离顺序获取这些点。

所以我想做类似的事情:

const markers = await this.markerRepo.find({
  where: {
    type: "test"
  },
  order: { position: 'ASC' },
});

但我想根据我当前的位置订购它们。

这个 ID 我的 table 实体 (Nestjs):

@Entity()
 export class Marker {
   @PrimaryGeneratedColumn()
   id: number;

   @Column({
     type: 'geography',
     spatialFeatureType: 'Point',
     srid: 4326,
     nullable: true,
   })
   position: Point;
 
   @Column()
   type: string;
 }

如果您需要更多信息,请告诉我

原来Typeorm不支持​​Postgis(没想到)

解决方案是发送一个 SQL 请求,如下所示:

const markers = await this.markerRepo.query(
  `SELECT * , ST_Distance(ST_MakePoint(${yourLatitude}, ${yourLongitude} ), position) AS dist FROM marker ORDER BY dist LIMIT 10;`,
);