【问题标题】:createdAt updatedAt aqueductcreatedAt updatedAt aqueduct
【发布时间】:2019-04-11 21:46:48
【问题描述】:

在 mongoose 中,架构有 timestamp: true 选项,它会为添加的任何模型项自动填充 createdAtupdatedAt

Aqueduct 有类似的东西吗?

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

我目前尝试了这个,但像往常一样失败了:

  @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'

【问题讨论】:

    标签: dart aqueduct


    【解决方案1】:

    发送响应时失败;您需要在insertICD 上致电asMap()。您提供的响应主体对象是一个标准的 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,了解在创建/更新事件中设置时间戳。

    【讨论】:

    • 准确!谢谢
    • 我最终使用了插入/更新回调。很方便
    猜你喜欢
    • 2019-07-19
    • 2022-12-02
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 2018-02-13
    相关资源
    最近更新 更多