2016-06-01 3 views
2

Anwendungsfall: Ich schreibe ein Backend mit MongoDB (und Flask). Momentan wird kein ORM wie Mongoose/Mongothon verwendet. Ich möchte die _id des Benutzers speichern, der jedes Dokument im Dokument erstellt hat. Ich möchte, dass es unmöglich ist, dieses Feld nach der Erstellung zu ändern. Das Backend ermöglicht derzeit beliebiges Updates mit (im Wesentlichen) collection.update_one({"_id": oid}, {"$set": request.json})Wie kann ein Feld nach der Erstellung in MongoDB unveränderbar gemacht werden?

ich von request.json (so etwas wie del request.json["_creator_id"]) das _creator_id Feld herausfiltern könnte, aber ich bin besorgt darüber, dass nicht alle Möglichkeiten abdeckt, in denen die Syntax sein könnte modifiziert, um das Feld zu aktualisieren (hmm, Punktnotation?). Idealerweise würde ich gerne einen Weg finden, um Felder in MongoDB selbst einmal zu schreiben, aber wenn das nicht klappt, dann gibt es einige kugelsichere Methoden, um Aktualisierungen eines Feldes im Code zu verhindern.

Antwort

1

imho gibt es keine Know Methoden Updates innerhalb Mongo zu verhindern. Da Sie das Verhalten der App steuern können, kann jemand dieses Update auch außerhalb der App vornehmen. Mongo haben keine Trigger - die in SQL-Welt die Möglichkeit haben, als Datenwächter zu spielen und Feldänderungen zu verhindern.

Wie Sie nicht ODM wieder verwenden, dann alles, was Sie können, ist CQRS Muster, das Sie App Verhalten ermöglicht es zu kontrollieren und solche Updates zu verhindern.

Verwandte Themen