当前位置: 首页 > 知识库问答 >
问题:

正在尝试在Typescript中设置protobuf映射项

锺离明煦
2023-03-14

我有以下消息:

syntax = "proto3";

message MyMessage {
  string id = 1;
  map<string, Any> attributeChanges = 2;
}

在typescript中,我试图根据一个类似于下面的typescript映射来设置protobuf消息的映射条目。

type Nullable<T> = T | undefined | null;

export interface IAuditChanges {
  currentValue: Nullable<string>;
  previousValue: Nullable<string>;
  fields?: Map<string, IAuditChanges>
}

我尝试遍历地图对象中的条目并以这种方式设置地图条目。

var attributesMap = message.getAttributechangesMap();
for (let key of Array.from(mappedChanges.keys())) {
  const mapEntry: any = mappedChanges.get(key);
  attributesMap.set(key, mapEntry);
}

我得到一个错误:“TypeError:b.toArray不是一个函数。”你知道我如何对每个typescript映射条目进行强制转换/序列化/打包,以便在protobuf中进行设置吗?我在几个地方找过运气不佳的例子。

https://developers.google.com/protocol-buffers/docs/proto3#any https://developers.google.com/protocol-buffers/docs/proto3#maps

谢谢你。

共有1个答案

姜志行
2023-03-14

Schembufany与TypeScriptany非常不同。TypeScriptany允许任何可能的JavaScript值。

另一方面,ProtobufAny是一条包含两个字段的消息:

>

type_url:protobuf消息类型的标识符

这意味着你不能把任何东西放在Any字段中。它必须是protobuf消息,打包成protobufAny

JavaScript引用实际上有一个例子:https://developers.google.com/protocol-buffers/docs/reference/javascript-generated#any

我建议为“IAuditChanges”写一条protobuf消息。你很可能根本不需要任何

 类似资料:
  • 我用的是Protobuf 3。从文档来看,似乎无法定义嵌套贴图: 我正在尝试创建一种消息类型来表示期权链的定价信息(出价和要价)。对于那些不熟悉这些金融工具的人,基本上我有一套“到期日期(YYYYMMDD)”。在每个过期日期中,我都有一组“strikes(float number;如果需要,可以用字符串表示,我同意)”。在每次行使中,我有两个期权,一个“看跌”和一个“看涨”(这被称为期权的“右”)

  • 我从地图生成一个复选框列表。现在如何设置键的值(false/true),现在我可以在UserConfig中下载它,以便在项目的其余部分使用该值。 我的看法: 我的类UserConfig: 控制器 我不使用数据库。它只需要保存用于生成报告的值

  • 我一直在这里跟随这个教程: Android Studio-导入外部库/JAR

  • 我正在proto3中创建消息对象,并使用自动生成的java类。我想为每个消息对象分配唯一的密钥。 在构建期间,它从微服务接收一个名为的原型对象,定义如下: 基于对象中的条目,通过遍历映射并散列每个条目来创建。( protobuf文档说,密钥的顺序无法定义。我应该如何保证在键域中具有相同条目的不同元数据对象生成相同的唯一键?

  • 我是个彻头彻尾的傻瓜。我正在尝试设置一个Redis连接,并能够使用c方法将密钥设置到Redis中。c代码很长,所以我只包括相关部分:网页。H 网页。cpp 编译错误 我使用的c Redis库是https://github.com/brianwatling/redispp 注意***我尝试使用Redisp命名空间,比如在这个例子中,但是连接类会与其他类冲突。https://github.com/br

  • 我正在定义一个从fos user bundle < code > base user 扩展而来的< code > usualio 实体,具体如下: 但是我得到了这个错误: MappingException:没有为“FOS\UserBundle\Model\User”的实体“UsuarioBundle \ Entity \ Usuario”子类指定标识符/主键。每个实体都必须有一个标识符/主键。 为