用例:我正在使用MongoDB(和Flask)编写后端。目前这还没有像Mongoose / Mongothon那样使用任何ORM。我想存储在文档中创建每个文档的用户的_id。我希望在创建之后修改该字段是不可能的。后端目前允许使用(基本上)del request.json["_creator_id"]
我可以从request.json中筛选出_creator_id字段(类似于.ng-valid[required] {
border-left: 5px solid #42A948; /* green */
}
),但我担心这并未涵盖可以修改语法以使字段更新的所有可能方式(嗯,点符号?)。理想情况下,我想在MongoDB本身中创建一次只写一次字段的方法,但是如果没有这样做,就会有一些防止代码更新字段的防弹方法。
答案 0 :(得分:2)
imho没有知道防止mongo内部更新的方法。 由于您可以控制应用程序行为,因此有人仍然可以在应用程序之外进行此更新。 Mongo没有触发器 - 在sql世界中有可能作为数据保护并防止字段更改。
当您不使用ODM时,您可以拥有的CQRS模式将允许您控制应用程序行为并阻止此类更新。
答案 1 :(得分:0)
我在修改字段时遇到了同样的问题。
尝试https://www.npmjs.com/package/mongoose-immutable-plugin
该插件将拒绝对字段的每次修改尝试,并且适用于
更新
UpdateOne
FindOneAndUpdate
UpdateMany
重新保存
它支持数组,嵌套对象等字段类型,并保护深度不变性。
插件还处理$ set,$ inc等更新选项。