modify method

  1. @override
Future<Map<String, dynamic>> modify(
  1. String id,
  2. Map<String, dynamic> data, [
  3. Map<String, dynamic>? params
])

Modifies a resource.

Implementation

@override
Future<Map<String, dynamic>> modify(String id, data,
    [Map<String, dynamic>? params]) async {
  Map<String, dynamic> currentDoc;

  try {
    currentDoc = await read(id, params);
  } on AngelHttpException catch (e) {
    if (e.statusCode == 404) {
      return await create(data, params);
    } else {
      rethrow;
    }
  }

  var updatedDoc = mergeMap([currentDoc, _removeSensitive(data)]);
  updatedDoc['updatedAt'] = DateTime.now().toIso8601String();

  try {
    var modified = await collection.findAndModify(
        query: where.id(_makeId(id)), update: updatedDoc, returnNew: true);
    var result = _jsonify(modified ?? {}, params);
    result['id'] = _makeId(id).oid;
    return result;
  } catch (e, st) {
    //printDebug(e, st, 'MODIFY');
    throw AngelHttpException(stackTrace: st);
  }
}