update method
Replaces the document with id, creating it if missing.
Implementation
@override
Future<Map<String, dynamic>> update(
String id,
Map<String, dynamic> data, [
Map<String, dynamic>? params,
]) async {
var oid = _makeId(id);
var now = DateTime.now().toIso8601String();
var existing = await collection.findOne(where.id(oid));
var updatedDoc = _removeSensitive(data)
..['createdAt'] = existing?['createdAt'] ?? now
..['updatedAt'] = now;
try {
var updated = await collection.findAndModify(
query: where.id(oid),
update: updatedDoc,
returnNew: true,
upsert: true,
);
return _jsonify(updated ?? {'_id': oid, ...updatedDoc}, params);
} catch (e, st) {
throw AngelHttpException(error: e, stackTrace: st);
}
}