javascript - 协议缓冲区 - 分配嵌套消息
问题描述
我的 PB 架构如下所示:
message ProductRecommendationReply {
string productid = 1;
message recommendationlist{
string recommendedproductid = 1;
string recommendedproductname = 2;
string recommendedproductprice = 3;
}
}
在服务器端(node.js),我正在尝试设置如下属性:
var message = {
productid: '',
recommendationlist: []
};
message.productid = result_list.product_Id;
message.recommendationlist.recommendedproductid = result_list.recomendation_list[0].recommended_product_id;
message.recommendationlist.recommendedproductname = result_list.recomendation_list[0].recommended_product_name;
message.recommendationlist.recommendedproductprice = result_list.recomendation_list[0].recommended_product_price;
callback(null,message); // send the result back to consumer.
问题是在调试 clinet 端时,只有productid
有一个值分配给它,recommendationlist
是空的。
如何正确地为嵌套消息赋值?
解决方案
您定义了一条消息,但没有声明该消息类型的字段。我想你的意思是
message ProductRecommendationReply {
string productid = 1;
message productrecommendationlist {
string recommendedproductid = 1;
string recommendedproductname = 2;
string recommendedproductprice = 3;
}
repeated productrecommendationlist recommendationlist = 2;
}
推荐阅读
- javascript - Django 和 jQuery.formset,如何操作删除按钮位置
- mysql - mysql有问题,不允许多个外键
- python - ValueError:没有足够的值来解包(预期 2,得到 1)使用列表
- spring-boot - 部署在 PCF 中的 Spring Boot - 响应时间慢。如何优化?
- spring - JPA Repository,指定具体方法的fetch模式
- messaging - Hazelcast - 忽略本地消息
- swift - 如果协议下的类在泛型函数之前是 var,则无法推断泛型参数“T”
- google-chrome-extension - Chrome 扩展程序:单个窗口中每个选项卡上的不同会话
- java - 如果相同的输入来自不同的数据源并且最终对象完全相同,应该使用哪种设计模式
- javascript - NetSuite - 将文件写入 Suitelet 响应以直接下载文件