node.js - gRPC Node : How to set a field that is of another Message type (with multiple types itself)

标签 node.js protocol-buffers grpc

我想要实现的是我有一个 .proto 文件:

message Request {
    Error error = 1;
    bool success = 2;
}

message Error  {
   int32 status = 1;
   string message = 2;
}

我编译它,以便为客户端和服务生成文件。然后,当我想使用生成的 setError()grpc 中设置时,我必须将什么传递给函数? (匹配错误消息)。一个对象,例如:

{
status: 200,
message: "Success!"

}

不起作用...有效的是:

const error = new Client.Error();
error.setMessage('Something');
error.setStatus(400);

然后,如果我有请求消息:

const request =  new Client.Request()
request.setError(error)

这可行,但我想知道是否可以直接将对象传递给 setError,而不必单独设置每个字段...

最佳答案

不幸的是,protobuf 的 javascript 编译器生成的代码强制您使用 setter 和 getter,因此您必须一一设置每个字段。

如果您不喜欢这种方法,您可以随时尝试使用动态 codegen 方法,该方法使用 protobufjs,并允许您使用普通对象作为可以传递的内容。这两种方法各有优缺点,但如果您想摆脱 setter,那就是正确的方法。

关于node.js - gRPC Node : How to set a field that is of another Message type (with multiple types itself),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56444796/

相关文章:

javascript - Discord JS 禁止所有事件禁止成员但不返回错误

node.js - 缺少 node-v59-linux-x64/grpc_node.node

python - protobuf python找不到包含

go - 如何在 *.proto 文件中定义空接口(interface)?

c++ - gRPC:在 C++ 中关闭异步服务器的推荐方法是什么?

go - 如何在 Go 中实现结构到类似结构的转换

javascript - NODE.js 和 JavaScript;从串行端口获取一行然后关闭

node.js - 在 NodeJS 中,是否可以在子目录上运行 Node 服务器?

ajax - 通过ajax将嵌套对象发布到nodejs服务器返回未定义

c# - 使用 FieldDescriptor 迭代未知的重复 protobuf 字段