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

标签 request protocol-buffers

我正在尝试为 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/

相关文章:

spring - 从 Spring 应用程序对非 Spring 应用程序的 Http 调用

java - Protocol Buffer - @ModelAttribute

protocol-buffers - 序列化 protobuf 输出的文件扩展名

protocol-buffers - 使用 protobuf-net 生成类时解码自定义选项值

iOS 奇迹 API : How to get all Characters

c# - Http Post 不工作(C# 代码工作而 java 代码不工作)

spring - 获取请求 header 名称和值

jquery - 如何在提交表单时使用 JQuery Ajax 发送请求而不重新加载页面

c# - protobuf-net 是否支持可空类型?

go - 无法检测到 go protobuf 的版本控制系统