ios - Vapor:对查询结果进行后处理?
问题描述
Vapor/Future 新手,正在与类型系统作斗争。
我想对查询结果做一些处理:
- 做查询。
- 更改/保存结果。
- 返回更改的结果。
例如:
func myIndex(_ req: Request) throws -> Future<[Todo]> {
return Todo.query(on: req)
.all()
.flatMap { allToDos in
allToDos.flatMap { toDo in
// change toDoch
return toDo.save(on: req).flatMap { $0 }
}
}
}
那么这种事情的正确模式是什么?
解决方案
利用flatten
func changeAllTodos(_ req: Request) throws -> Future<HTTPStatus> {
return Todo.query(on: req).all().flatMap { allToDos in
return allToDos.map { toDo in
// change toDoch
return toDo.save(on: req).transform(to: ())
}.flatten(on: req).transform(to: .ok)
}
}
推荐阅读
- excel - 如何在excel中检查数字是否以“+”开头?
- javascript - 在谷歌地图 JavaScript API 中每 5 秒刷新一次标记位置
- php - 如何使用 Spout 读取上传的文件 ($_FILE)
- elixir - Phoenix/Elixir:何时创建新上下文的提示
- gitlab - gitlab-ci 每周只运行 1 行
- python - 多索引“get_level_values”-任意多个级别的函数
- python - Pandas 中的自定义聚合表达式
- c++ - 如何为 C++ 库/类生成 C 和 C++ 头文件?
- javascript - 粘性部分在滚动时会抖动(闪烁)
- ios - iOS B2B Distribution - Apple 将如何测试具有私有部署服务的移动应用程序?