Swift Vapor 查询过滤和按距离排序

问题描述 投票:0回答:1

我正在从事 swift Vapor 项目。我需要按距离对用户进行过滤和排序(距离不应超过100公里,并且第一个用户应该是最近的)。我有坐标纬度和经度。我需要专门使用查询方法过滤和排序来实现此目的,以获得良好的优化。我该怎么做?

我正在使用 PostgreSQL 数据库。

func getAll(_ req: Request, arguments: UserFilter) async throws -> [User] {
  let user = try req.auth.require(User.self)
  var query = User.query(on: req.db)

  arguments. filter(&query)

  if let lat = user.latitude, let lon = user.longtitude {
    query. filter(
      User.self, 
      field: KeyPath<Schema, QueryableProperty>, // not yet provided
      method: DatabaseQuery.Filter.Method,       // not yet provided
      value: Decodable & Encodable)              // not yet provided
    )
  }
}

return try await query.all()
@OptionalField(key: "latitude")
var latitude: Float?

@OptionalField(key: "longtitude")
var longtitude: Float?
swift postgresql server backend vapor
1个回答
0
投票

我在 Vapor 官方 GitHub 上问了同样的问题。有人推荐我这个框架。它帮助了我。

© www.soinside.com 2019 - 2024. All rights reserved.