我要实现的是我有一个.proto
文件:
message Request {
Error error = 1;
bool success = 2;
}
message Error {
int32 status = 1;
string message = 2;
}
我将其编译,以便为客户端和服务生成文件。然后,当我想在grpc
中使用生成的setError()
进行设置时,我必须传递给函数什么? (以匹配错误消息)。诸如以下的对象:
{
status: 200,
message: "Success!"
}
不起作用...起作用的是
const error = new Client.Error();
error.setMessage('Something');
error.setStatus(400);
然后,如果我有一条请求消息:
const request = new Client.Request()
request.setError(error)
那行得通,但是我想知道您是否可以直接将一个对象传递给setError,而不必分别设置每个字段...
答案 0 :(得分:1)
不幸的是,从protobuf的javascript编译器生成的代码迫使您使用setter和getter,因此您将必须一个个地设置每个字段。
如果您不喜欢此方法,则始终可以尝试使用动态代码生成方法,该方法使用protobufjs,并允许您使用普通对象作为可以传递的对象。两种方法之间都有优缺点,但是如果您想要摆脱二传手,那将是一条路。
答案 1 :(得分:-1)
您可能会在error handling best practices上找到此指南有用。
通常,错误是通过引发异常来创建的。该异常包含状态代码和一条消息,与您的XdebugDriver.onBreak must not be null
java.lang.IllegalArgumentException: Argument for @NotNull parameter 'remoteFileUrl' of com/jetbrains/php/debug/xdebug/debugger/XdebugDriver.onBreak must not be null
响应相匹配。