在 NodeJS 中从 gRPC 检索嵌套列表矩阵

问题描述

我将 gRPCNodeJs 一起使用,我想要的响应是这样的(JS 格式的示例):

[
  ['aa1',0],['aa2',...
  ['aaN',]

是另一个列表中的列表。就像一个二维数组或矩阵。

这里的问题是我没有看到在没有键/值字段的对象中返回列表的示例,所以我不知道如何创建 .proto 文件

现在我有这样的事情:

message Response{
  repeated ResponseData data = 1;
}
message ResponseData {
  repeated string field1 = 1;
  repeated uint32 field2 = 2;
  repeated uint32 field3 = 3;
}

并进入节点文件获取和读取数据我有类似的东西:

client.getData(request,{},(err,response)=> {
  var result = response.getDataList();
  // ^^^^^^^ here I want to get the matrix
}

我也试过:

var result = response.getDataList();
result.forEach(element => {
  console.log("element 1 = ",element.getField1List())
  console.log("element 2 = ",element.getField2list())
  console.log("element 3 = ",element.getField3List())
})

但是从 element.getFieldXList() 返回的数组是空的。

也是从服务器我发送这个测试矩阵:

[["0",["1",1,1],["2",2,2],["3",3,3]]

感谢任何帮助。
提前致谢。

编辑:
使用 console.log(JSON.stringify(result))输出是:

[{"wrappers_":null,"arrayIndexOffset_":-1,"array":[[],[],[]],"pivot_":1.7976931348623157e+308,"convertedPrimitiveFields_":{}},{"wrappers_":null,"convertedPrimitiveFields_":{}}]

解决方法

问题中的 protobuf 消息定义描述了一个对象,该对象包含一个对象列表,每个对象都有三个字段,每个字段都有一个原始值列表。但是,您说您尝试发送一个列表列表,这是一个非常不同的结构。要发送消息,您需要提供一个具有相同结构的对象。对于提供的消息类型,它看起来像这样:

response = {
  data = [
    {
      field1: ["0"],field2: [0],field3: [0]
    },{
      field1: ["1"],field2: [1],field3: [1]
    },// ...
  ]
}

如果您想表示更类似于问题中列表的内容,您可能希望 ResponseData 消息的内部字段不是 repeated

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...