createdAt UpdatedAt渡槽

时间:2019-04-11 21:46:48

标签: dart aqueduct

在猫鼬中,模式有timestamp: true选项,该选项会自动为添加的任何模型项填充createdAtupdatedAt

渡槽中有类似的东西吗?

如果没有,该如何手动操作?

我目前照常尝试此操作,但失败了:

  @Operation.post()
  Future<Response> createICD(@Bind.body() ICD body) async {
    body.createdAt = DateTime.now();
    final query = Query<ICD>(context)..values = body;
    final insertICD = await query.insert();

    return Response.ok({'state': true, 'data': insertICD});
  }

上述方法的错误是:

Converting object to an encodable object failed: Instance of 'ICD'

1 个答案:

答案 0 :(得分:1)

发送响应失败。您需要在asMap()上致电insertICD。您提供的响应主体对象是标准的Dart映射-它没有任何特殊的编码行为,因此它不知道如何编码像ManagedObject这样的复杂类型。在托管对象上调用asMap(),将其转换为标准Dart地图:

@Operation.post()
Future<Response> createICD(@Bind.body() ICD body) async {
  body.createdAt = DateTime.now();
  final query = Query<ICD>(context)..values = body;
  final insertICD = await query.insert();

  return Response.ok({'state': true, 'data': insertICD.asMap()});
}

另外,请参见http://aqueduct.io/docs/db/validations/#update-and-insert-callbacks来设置创建/更新事件的时间戳。