问题描述
我正在尝试按照 gRPC gateway 指南在 Node.JS 服务器中实现 installation。
这些步骤是为 ERROR: Syntax error at or near "$1"
LINE 2: FROM $1.parcel t join bounds b
^
QUERY: SELECT st_asmvtgeom(st_transform(t.geom,3857),b.geom) AS geom,parcel_id
FROM $1.parcel t join bounds b
on st_intersects(t.geom,st_transform(b.geom,4269))
CONTEXT: PL/pgsql function inline_code_block line 17 at EXECUTE
sql state: 42601
编写的,但我尝试在 Node.JS 中进行。
我找到了 this 响应,还有一些像 this one 这样的包,所以可以在 node 中实现。
- protoc-gen-grpc-gateway
- protoc-gen-openapiv2
- protoc-gen-go
- protoc-gen-go-grpc
我已经从 here 下载了前两个二进制文件,所以问题可能是最后两个。
我假设 golang
来自 go
,所以我必须搜索类似 golang
的内容。我见过 this npm 包,但是,我想尽可能多地自己实现。我不想依赖第三方。
此时我必须首先将二进制文件放入我的路径中,但没有后两个。
一旦定义了 gRPC 服务,下一步就是生成 gRPC 存根。我有这条线:
protoc-gen-node-grpc
这样就可以生成文件了。我不知道是否必须使用 RUN protoc -I=. mygrpc.proto --js_out=import_style=commonjs,binary:./my/folder/ --grpc-web_out=import_style=commonjs,mode=grpcwebtext:./my/folder/
和 --js_out
来创建客户端和服务文件。
然后,下一步是使用 --grpc-web_out
生成反向代理。
我愿意(如向导所说):
protoc-gen-grpc-gateway
这会生成一个 protoc -I=./my/path/ myproto.proto \
--grpc-gateway_out ./my/path/ \
--grpc-gateway_opt logtostderr=true \
--grpc-gateway_opt paths=source_relative \
--grpc-gateway_opt generate_unbound_methods=true
文件:.go
。
进入文件说:
myproto.pb.gw.go
所以我假设步骤已正确完成,但是:如何在我的 Node.JS 服务器中执行此操作?
我有一个使用 Express API 的节点项目,我想使用 grpc-gateway 而不是 express API 端点...但我只有一个 // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: myproto.proto
/*
Package myproto is a reverse proxy.
It translates gRPC into RESTful JSON APIs.
*/
文件。
我的原型版本是:
libprotoc 3.14.0
提前致谢。
解决方法
作为问题注释,grpc-gateway 只生成 Go 代码。随意使用 Go,只需要从 proto 生成代码并添加服务。您可以在 Java helloworlde/grpc-gateway 中引用我的示例代码;而且buf在生成代码方面比protoc更好。如果你想自己写,你可以参考Java中的ReflectionCall.java wirte,它可以在不生成代码的情况下调用服务器。