2017-05-06 201 views
0

我想讓我的頭繞着協議緩衝區。我瞭解基本的東西,但現在我試圖將下面的JavaScript對象定義爲.proto。使用Node.js gRPC Library協議緩衝區

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; 
} 

回答

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; 
}