Google Protocol Buffers:根据我的请求设置日期值时,c.toArray 不是函数

Bar*_*yle 4 request protocol-buffers google-protocol-buffer

我正在尝试为grpc-web. 我已经生成了协议缓冲区,我可以成功获取信息,但是我在创建请求时遇到了问题。

例如。

const request = new PricingMethodRequest()
request.setCurrencyId(64)
request.setId(0)
request.setFrequency(1)
request.setFromDate({ nanos: 0, seconds: 1555064508 }) // <--- Crashes on this line
...
Run Code Online (Sandbox Code Playgroud)

TypeError: c.toArray is not a function当我尝试设置日期值时,似乎我一直在收到。甚至也是一个对象的价格值。

如何实现设置日期值或任何需要 JavaScript 对象的值?

编辑:

我在网上看到过一些我可以做这样的事情:

const fromDateAny = new proto.google.protobuf.Any.fromJavaScript({ nanos: 0, seconds: 1555064508 })
request.setFromDate(fromDateAny)
Run Code Online (Sandbox Code Playgroud)

但是这样做给了我错误Cannot find name 'proto'

Bar*_*yle 6

事实证明,我必须TimestampfromDate.

我这样做了:

import * as timestamp_pb from 'google-protobuf/google/protobuf/timestamp_pb'

...

const timestampFromDate = new timestamp_pb.Timestamp()
timestampFromDate.setSeconds(fromdate.seconds)
timestampFromDate.setNanos(fromDate.nanos)

request.setFromDate(timestampFromDate)
Run Code Online (Sandbox Code Playgroud)

  • 主要是反复试验,我想最终我更深入地研究了我的 protobuf 定义,以探索它们是如何工作的。 (2认同)