2017-03-09 7 views
1

Ich habe die Dokumente durchsucht und noch keine Lösung gefunden. Die App basiert lose auf der "sayHello"-example aus ihren Dokumenten, aber jedes Mal, wenn der Code ausgeführt wird, wird die Warnung Method handler for /eventComm.DatabaseRPC/InsertSingleDocument expected but not provided zurückgegeben.NodeJS gRPC: "Methodenhandler erwartet, aber nicht bereitgestellt"

Meine proto-Datei:

service DatabaseRPC { 
    rpc InsertSingleDocument (Doc) returns (Doc) {} 
} 

message Doc { 
    required string name = 1; 
    required int32 id = 2; 
} 

Mein gRPC Server:

function InsertSingleDocument (call, callback) { 
    callback(null, { 
     name: 'Hello ', 
     id: 1 
    }) 
    } 
    let server = new grpc.Server() 
    server.addProtoService(protoDef.DatabaseRPC.service, { 
    InsertSingleDocument: InsertSingleDocument 
    }) 
    server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure()) 
    server.start() 

Was ist das Problem mit diesem Code? Natürlich habe ich versucht, bereits zu google the error fand aber sollen mit dem ersten Buchstaben keine Lösung

Antwort

2

Zur Einhaltung mit JavaScript Namenskonventionen, Methoden kleingeschrieben zur Verfügung gestellt werden:

server.addProtoService(protoDef.DatabaseRPC.service, { 
    insertSingleDocument: InsertSingleDocument 
}) 

Sie dies im Beispiel Hallo Welt sehen Sie verknüpfen . Die Methode wird in der Proto-Datei als SayHello deklariert, aber als sayHello an den Server übergeben.

Hinweis: Ich stimme zu, dass dies verwirrend ist, und I will try to improve the situation.

+0

Vielen Dank. Ich habe den unteren Fall im Beispiel völlig vermisst. Ist es auch ein Problem mit anderen Sprachen? Vielleicht würde es helfen, ein Benennungsschema zu erzwingen, bei dem alle Funktionen mit einem Anfangsbuchstaben in der Proto-Datei deklariert werden. – trahloff

+0

In mehreren Sprachen wird erwartet, dass Methodennamen dem Benennungsschema dieser Sprache folgen. Diese Benennungsschemata können jedoch unterschiedlich sein. Die Deklaration, die Sie in der Proto-Datei haben, stimmt mit der Namenskonvention für Proto-Dateien überein. – murgatroid99

+1

Ok, danke für die Klarstellung. Könnte das zur Dokumentation hinzugefügt werden? In großen roten Buchstaben. Ich mag gRPC bis jetzt, aber ich habe dieses Bit komplett übersehen, als ich den [Quick Start Guide] (http://www.grpc.io/docs/quickstart/node.html#update-a-grpc-service) gelesen habe. – trahloff

Verwandte Themen