本文介绍了Google Protocol Buffers:c.toArray不是针对我的请求设置日期值的函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为grpc-web构建一个CREATE请求。我已生成协议缓冲区,并且可以成功获取信息,但在创建请求时遇到问题。

例如

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)

但是这样做会导致错误Cannot find name '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)

这篇关于Google Protocol Buffers:c.toArray不是针对我的请求设置日期值的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-17 18:15