登录
首页 >  Golang >  Go问答

在 gRPC 原型文件中如何定义关联?

来源:stackoverflow

时间:2024-03-25 08:57:41 443浏览 收藏

在 gRPC 原型文件中定义关联涉及在要关联的消息原型文件中导入相关原型文件。通过使用 `import` 语句,您可以将其他原型文件的类型和服务纳入当前原型文件中。这类似于导入标准原型定义(例如 `timestamp` 和 `duration`),使您可以使用其他文件中的消息和服务。通过这种方法,您可以定义跨多个原型文件的消息关联,从而实现不同服务和消息之间的交互。

问题内容

我可能会以错误的方式处理它,但我想定义两个或多个结构(消息)之间的关系。

以 stackoverflow 为例,假设我有一个 labelservice 用于标签上的 crud 操作。我还有一个 questionservice,其中 question 可以有 labels。我们还假设我有一个 userservice 并且 user 也可以附加标签

# label.proto
service labelservice {
    rpc createlabel() returns();
    ...etc
}
message label {
   string text = 1;
}

但现在我想创建我的 questionservicequestion 消息。我是否以某种方式关联这两个文件,或者这种级别的关联是在 go 代码中完成的吗?

# question.proto
service QuestionService {
    rpc CreateQuestion() returns();
    ...etc
}
message Question {
   string text = 1;
   repeat Label labels = 2 # <-- how to do this?
}

# user.proto
service UserService {
    rpc CreateQuestion() returns();
    ...etc
}
message User {
   string name = 1;
   repeat Label labels = 2 # <-- how to do this?
}

我认为我很困惑,因为对于 rest api 和使用 gorm.io,我会在结构中设置关联并让 gorm.io 创建表。


正确答案


来自docs

import "myproject/other_protos.proto";

所以只需将 question.proto 中的 import 添加到 user.proto 即可。这与导入其他标准 proto 定义(例如 timestampduration)没有什么不同:

import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";

您是否已经在 question.proto 中导入了 user.proto ?

有问题.proto

import "user.proto" <-我认为你可以使用 label 标签

以上就是《在 gRPC 原型文件中如何定义关联?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>