我可能以错误的方式去做,但我想定义两个或多个结构(消息)之间的关系。
以 StackOverflow 为例,假设我对标签上的 CRUD 操作LabelService
。我还有一个QuestionService
,Question
可以Labels
.让我们也假设我有一个UserService
,一个User
也可以附上标签
# label.proto
service LabelService {
rpc CreateLabel() returns();
...etc
}
message Label {
string text = 1;
}
但现在我想创建我的QuestionService
并Question
消息。我是否以某种方式关联这两个文件,或者这种级别的关联是在 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 创建表。
从文档中:
import "myproject/other_protos.proto";
因此,只需在question.proto
中添加一个import
即可user.proto
。这与导入其他标准proto
定义(如timestamp
和duration
)没有什么不同:
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
您是否已经在 question.proto 中导入了 user.proto?
in question.proto
import "user.proto"
<-我认为您可以使用Label labels