protocol-buffers - 资源内集合上的协议缓冲区字段掩码
问题描述
如果我想更新以下资源(协议缓冲区)中“f_units”集合中特定元素内的“金额”字段,FieldMask 将如何更新金额字段?字段掩码是否对集合的数组索引进行操作?
{
"f_sel": {
"f_units": [
{
"id": "1",
"amount": {
"coefficient": 1000,
"exponent": -2
}
},
{
"id": "2",
"amount": {
"coefficient": 2000,
"exponent": -2
}
}
]
}
}
会是“f_sel.f_units.0.amount”吗?如何使用 FieldMask 更新金额?
解决方案
据我所知,没有办法用 FieldMask 中的索引替换重复字段的单个元素。
相反,您需要更新 f_units 中要更改的元素的数量字段,并将 FieldMask 设置为
"f_sel.f_units"
只需将增量发送到原始列表会稍微更有效,但很难防止错误。例如,如果同时修改了 proto 并且重复字段的指定索引(假设有一种方法可以指定)不再在范围内怎么办?
顺便说一句,谷歌确实提出了 MergeOptions 的概念,它定义了合并时如何处理重复字段的语义。目前,他们似乎打算让您完全替换重复的字段或附加到目标字段的末尾。这两种合并策略都避免了上述可能由指定无效索引引起的错误。
推荐阅读
- reactjs - 从一个 React 文件渲染一个“多”页面应用程序
- node.js - 有没有办法使用 mongo-topology-manager 创建 ReplSet
- mysql - c#我如何解决错误mysql the used command is not allowed 1148?
- python - 观察次数有限时的时间序列预测
- jakarta-ee - JEE Batch Job Specification with many optional Steps
- python - 如何在 Mac 上的 Python 中将 NEF(原始图像文件类型)转换为 JPG?
- ruby - RubyMine:终止超时工人
- java - How to sort multiple arrays of different types (int and String)
- swiftui - SwiftUI:在 Single 和 HStack 视图之间制作动画
- spring-boot - CAS 6.0 和 Spring Security:服务票证验证时 JWT 配置失败