modify method
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);
}
}