Учитывая метод контроллера, который принимает тело запроса, которое соответствует некоторым или всем свойствам объекта в Vapor, есть ли способ обновить объект, не назначая вручную все его свойства? В настоящее время я должен сделать это:
func update(_ req: Request) throws -> Future<Mission> {
let mission = try req.parameters.next(Mission.self)
let content = try req.content.decode(Mission.self)
return flatMap(to: Mission.self, mission, content) { (mission, content) in
mission.propertyA = content.propertyA
mission.propB = content.propB
mission.propC = content.propC
return mission.save(on: req)
}
}
Это не очень масштабируемо, так как требует, чтобы я вручную назначал каждое свойство. Я ищу что-то вроде этого:
func update(_ req: Request) throws -> Future<Mission> {
let mission = try req.parameters.next(Mission.self)
let content = try req.content.decode(Mission.self)
return mission.save(on: content)
}
Однако это приводит к ошибке Argument type 'EventLoopFuture<Mission>' does not conform to expected type 'DatabaseConnectable'
.
Какое здесь хорошее решение?