我正在尝试为 grpc-web
构建创建请求。我已经生成了 Protocol Buffer ,并且可以成功获取信息,但在创建请求时遇到问题。
例如。
const request = new PricingMethodRequest()
request.setCurrencyId(64)
request.setId(0)
request.setFrequency(1)
request.setFromDate({ nanos: 0, seconds: 1555064508 }) // <--- Crashes on this line
...
当我尝试设置日期值时,我似乎不断收到TypeError: c.toArray is not a function
。或者甚至是一个价格值,它也是一个对象。
如何实现设置日期值或任何需要 JavaScript 对象的值?
编辑:
我在网上看到过一些东西,我可以做这样的事情:
const fromDateAny = new proto.google.protobuf.Any.fromJavaScript({ nanos: 0, seconds: 1555064508 })
request.setFromDate(fromDateAny)
但是这样做会给我错误无法找到名称“proto”
。
最佳答案
事实证明,我必须为 fromDate
创建一个 Timestamp
类型。
我这样做是这样做的:
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)
编辑:
我发现了一种更简洁的方法来读取和编写这些函数,只需链接它们即可。例如。构建的最终请求将如下所示:
const request = new PricingMethodRequest()
.setCurrencyId(64)
.setId(0)
.setFrequency(1)
.setFromDate(
new timestamp_pb.Timestamp()
.setSeconds(1555064508)
)
关于request - 根据我的请求设置日期值时,Google Protocol Buffers : c. toArray 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55630469/