我想要实现的是我有一个 .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/