0

我正试图了解协议缓冲区。我理解了基本的东西,但现在我正在尝试将以下 javascript 对象定义为 .proto。使用Node.js gRPC 库

const listsSchema = new Schema({
    id: { type: String, required: true },
  id_str: { type: String, required: true, index: { unique: true } },
  name: { type: String, required: true },
  description: { type: String, required: true },
  slug: { type: String, required: true },
  createdAt: { type: Date, 'default': Date.now },
  updatedAt: { type: Date, 'default': Date.now },
  track: { type: Boolean, 'default': false },
  lastTrackedTweet: [
    { 
      id: { type: String, required: true },
      id_str: { type: String, required: true },
      createdAt: { type: Date, 'default': Date.now },
      updatedAt: { type: Date, 'default': Date.now }
        }
    ]
});

这是我想出的,但它被拒绝了。

syntax = "proto3";

package lists;

service Lists {
  rpc FindLists (ListRequest) returns (ListReply) {}
}

message ListRequest {
  struct params = 1;
}

message ListReply {
  repeated struct List = 1;
}

message List {
 int64 id = 1;
 string id_str = 2;
 string name = 3;
 string description = 4;
 string slug = 5;
 Timestamp createdAt = 6;
 Timestamp updatedAt = 7;
 bool track = 8;
 repeated struct LastTrackedTweet = 9;
}

message LastTrackedTweet {
  int64 id = 1;
  string id_str = 2;
  Timestamp createdAt = 3;
  Timestamp updatedAt = 4;
}
4

1 回答 1

0

我想到了。高级示例的文档不太好:

syntax = "proto3";

package lists;

service Lists {
  rpc FindLists (ListRequest) returns (ListReply) {}
}

message ListRequest {
 string query = 1
}

message ListReply {
  repeated List list = 1;
}

message List {
 int64 id = 1;
 string id_str = 2;
 string name = 3;
 string description = 4;
 string slug = 5;
 string createdAt = 6;
 string updatedAt = 7;
 bool track = 8;
 repeated LastTrackedTweet lastTrackedTweet = 9;
}

message LastTrackedTweet {
  int64 id = 1;
  string id_str = 2;
  string createdAt = 3;
  string updatedAt = 4;
}
于 2017-05-07T09:16:28.297 回答