Swift 手动修改vapor 4响应中的模型特性值

Swift 手动修改vapor 4响应中的模型特性值,swift,vapor,server-side-swift,vapor-fluent,Swift,Vapor,Server Side Swift,Vapor Fluent,我有一个蒸汽4应用程序。我从数据库中查询一些项目,并希望在完成请求之前根据返回的值执行一些手动计算。这里是我试图实现的示例代码 final类待办事项:模型、内容{ 静态变量模式:String=“todos” @ID(自定义:.ID) 变量id:Int? @字段(键:“标题”) 变量标题:字符串 var-someValue:Int? } ///允许将“Todo”用作动态迁移。 结构CreateTodo:迁移{ func prepare(关于数据库:database)->EventLoopFutur

我有一个蒸汽4应用程序。我从数据库中查询一些项目,并希望在完成请求之前根据返回的值执行一些手动计算。这里是我试图实现的示例代码

final类待办事项:模型、内容{
静态变量模式:String=“todos”
@ID(自定义:.ID)
变量id:Int?
@字段(键:“标题”)
变量标题:字符串
var-someValue:Int?
}
///允许将“Todo”用作动态迁移。
结构CreateTodo:迁移{
func prepare(关于数据库:database)->EventLoopFuture{
database.schema(Todo.schema)
.field(“id”、.int、.identifier(自动:true))
.field(“title”、.string、.required)
.create()
}
func revert(在数据库上:数据库)->EventLoopFuture{
database.schema(Todo.schema).delete()
}
}
TodoController的最终类:RouteCollection{
func引导(路由:RoutesBuilder)抛出{
routes.get(“tmp”,使用:temp)
}
func temp(uq:Request)抛出->EventLoopFuture{
查询(on:req.db).all().map{todos in
todos.map{
$0.someValue=(0…10).randomElement()!
返回$0
}
}
}
}
问题是这些手动更改无法响应。在这种情况下,
someValue
属性。

谢谢

[
{
“标题”:“第1项”,
“id”:1
},
{
“标题”:“第2项”,
“id”:2
}
]

您遇到的问题是
模型
s覆盖了
可编码
实现。这允许你做一些事情,比如传递给父母,不添加孩子等等

然而,这打破了你的观点。如果要返回一个
Todo
,而另一个字段未存储在数据库中,则应创建一个新类型,例如:

struct to响应:内容{
让id:Int
标题:字符串
让someValue:Int
}
然后在路由处理程序中从数据库类型转换为响应类型(这是一种非常常见的模式,也是在Vapor中执行此操作的推荐方法)