Я только начал работать с программированием и паром, и у меня возникла следующая проблема с запросами:
Когда пользователь отправляет запрос в / api / trip / new, чтобы создать новую поездку, я хочу получитьПервый драйвер из базы данных и назначить их идентификатор для объекта Trip.Затем я хочу сохранить и запрос на поездку, и запрос на поездку в базе данных.
У меня есть следующий код:
func newTripHandler(_ req: Request, data: TripRequestCreateData) throws -> Future<TripRequest> {
let passenger = try req.requireAuthenticated(Passenger.self)
let tripRequest = try TripRequest(pickupLat: data.pickupLat,
pickupLng: data.pickupLng,
destLat: data.destLat,
destLng: data.destLng,
pickupAddress: data.pickupAddress,
destAddress: data.destAddress,
passengerId: passenger.requireID())
//Passenger's location
let lat = tripRequest.pickupLat
let lng = tripRequest.pickupLng
//Passenger's destination
let toLat = tripRequest.destLat
let toLng = tripRequest.destLng
let trip = Trip(passengerId: tripRequest.passengerId!,
pickupLat: lat,
pickupLng: lng,
destLat: toLat,
destLng: toLng,
pickupAddress: tripRequest.pickupAddress,
destAddress: tripRequest.destAddress)
let driver = Driver.query(on: req).first().unwrap(or: Abort(.notFound))
let driverId = driver.map(to: Driver.self) { driver in
return driver.id
}
trip.driverId = driverId
print(trip)
return tripRequest.save(on: req)
}
struct TripRequestCreateData: Content {
let pickupLat: Double
let pickupLng: Double
let destLat: Double
let destLng: Double
let pickupAddress: String
let destAddress: String
}
Я не уверен, как сохранить две модели и как правильнополучить драйвер из базы данных.Константа driverId имеет тип EventLoopFuture вместо Driver, поэтому я не могу присвоить идентификатор свойству driverId поездки.
Как мне настроить свой код для достижения этой цели?