繁体   English   中英

如何将嵌套的响应数据存储在 protobuf 中?

[英]How to store back the nested response data in protobuf?

我正在使用 GRPC 远程调用数据库并以 .proto 文件给出的响应格式存储数据。 我的程序基于 CPP 编程:

// similar .proto file
message FinalResponse
{
    repeated IntermediateResponse finals = 1;
}

message IntermediateResponse
{
    string name = 1;
    InitialResponse foo = 2;
}

enum InitialResponse
{
    COUNTRY_UNKNOWN = 0;
    COUNTRY_INDIA = 1;
}

就我而言,请求消息为空(无字段),因此未在此处显示。 我浏览了协议缓冲区文档并尝试了这个:

// firstly called the database and stored the intermediateResponse in a vector<pair<string, string>> data

//pseudo-code below:
FinalResponse result;

for cur_data in data:
{ 
    IntermediateResponse *interResp = result.add_finals();
    interResp->set_name(cur_data.first);
    interResp->set_foo(static_cast<InitialResponse>(cur_data.second));
}

当我执行此操作时,没有语法/构建错误,但 grpc 状态说我们没有得到任何响应:

ERROR - (12) No message returned for unary request

我想澄清一下服务是从服务器端运行的,并且客户端也能够检测到该服务,我怀疑通过数据库返回的数据可能没有正确存储在响应消息中,因此 GRPC 推断我们没有不取回任何数据。 请为此建议一些解决方法?

看起来这可能是服务器端问题,现在进行相同的更改,它能够正确存储响应。

也许服务器关闭了一段时间并返回错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM