我正在开发一个 CRUD Web 应用程序,它公开一个 REST 端点以更新 MongoDB 集合中的现有文档。
前端发送的 json 对象只包含需要更改的字段。
由于 json 解析器会将 json 对象中不存在的所有字段初始化为 null,我怎么知道一个字段是 null 是因为用户想要删除该值,还是因为它不需要更新?
答案可能是没有办法知道,但我的问题是:人们通常如何处理这种情况?
每次发送完整的对象并在数据库中完全替换它对我来说不是一个选择,原因有几个(良好的实践、性能以及前端的工作方式)。
我想到了一个可行的解决方案,但我对此并不满意:
- 为每个非必填字段添加一个额外的布尔标志(对于必填字段,我知道我无法删除该值)
- 拦截 MessageBodyReader 中的 json 并自己解析 json
- 如果 json 中存在带有 null 的字段,则将额外标志设置为 true 以将其标记为“删除”
这是迄今为止我能想到的“最干净”的解决方案,但它需要做很多额外的工作,我希望我能找到另一种方法。
提前感谢您的任何建议。