Обновление до Vapor 4: как создать модель и вернуть ее - PullRequest
2 голосов
/ 05 мая 2020

В моем старом коде Vapor 3 я создаю такие модели:

address.create(on: conn).flatMap { savedAddress in
    // do something with saved address
}

С помощью документации Vapor 4 я теперь передаю db функции create вместо соединения. Проблема в том, что кажется, что flatMap возвращает Void, поскольку я получаю следующую ошибку при попытке доступа к savedAddress: «Значение типа кортежа 'Void' не имеет члена ...».

Как следует Я это переписываю?

1 Ответ

3 голосов
/ 06 мая 2020

Поскольку все модели в Fluent 4 должны быть классами, вы можете полагаться на семантику ссылок, чтобы делать то, что вы хотите (вот почему create(on:) возвращает EventLoopFuture<Void>. Итак, в вашем примере вместо savedAddress вы можете просто использовать address в качестве сохраненной модели. Когда она будет сохранена, Fluent установит свойство ID вашей модели для объекта address, который затем можно будет получить в закрытии flatMap с помощью address.requireID()

...