gpt4 book ai didi

node.js - 如何在 gRPC nodejs 客户端中解压 google.protobuf.Any 类型?

转载 作者:搜寻专家 更新时间:2023-10-31 23:59:16 25 4
gpt4 key购买 nike

我的protobuf文件是这样的:

syntax = "proto3"; import "google/protobuf/any.proto";

service RoomService {
getTestAny (Hotelid) returns (google.protobuf.Any); }

message Hotelid {
string hotelid = 1;
}

message HtlInDate {
Hotelid hotelid = 1;
string date = 2;
}

我的 java-gRPC-server 代码是这样的:

@Override
public void getTestAny(Roomservice.Hotelid request, StreamObserver<Any> responseObserver) {

Roomservice.Hotelid hotelid = Roomservice.Hotelid.newBuilder()
.setHotelid("This is Hotelid")
.build();

Roomservice.HtlInDate htlDate = Roomservice.HtlInDate.newBuilder()
.setHotelid(hotelid)
.setDate("This is Data")
.build();

responseObserver.onNext(Any.pack(htlDate));
responseObserver.onCompleted();
}

然后我从 nodejs-gRPC-client 发出请求,代码如下:

function () {
var client = new services.RoomServiceClient('localhost:6565',
grpc.credentials.createInsecure());

var request = new messages.Hotelid();
var hotelid = "ignore";

request.setHotelid(hotelid);

var call = client.getTestAny(request, function (err, response) {

var obj = response.toObject();

console.log(obj);
});
}

nodejs-gRPC-client中的response是Any类型。它包含一个数据数组:

array:["type.googleapis.com/HtlInDate", Uint8Array[10,17,10...]]

我尝试使用 response.toObject() 来获取 HtlInDate 实例,但我只是这样:

obj:{
typeUrl:"type.googleapis.com/HtlInDate",
value:"ChEKD1RoaXMgaXMgSG90ZWxpZBIMVGhpcyBpcyBEYXRh"
}

So how can I unpack the Any type response and get the HtlInDate instance exactly? Thanks a lot if you have any idea about this!

最佳答案

目前Node.js不支持google.protobuf.Any类型,无论是gRPC默认使用的Protobuf.js还是官方首发的google-protobuf派对 protobuf 实现。

关于node.js - 如何在 gRPC nodejs 客户端中解压 google.protobuf.Any 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42150608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com