создано при обновлении на акведуке - PullRequest
1 голос
/ 12 апреля 2019

В mongoose есть опция timestamp: true для схемы, которая автоматически заполняет createdAt и updatedAt для любого добавленного элемента модели.

Есть ли что-то похожее в акведуке?

Если нет, то как мне сделать это вручную?

В настоящее время я пробовал это, но обычно это не получается:

  @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 Ответ

1 голос
/ 12 апреля 2019

Сбой при отправке ответа;вам нужно позвонить asMap() на insertICD.Предоставляемый вами объект тела ответа - это стандартная карта Дартса - у него нет особого поведения кодирования, поэтому он не знает, как кодировать сложный тип, такой как 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 для установки меток времени при событиях создания / обновления.

...