2017-03-09 7 views
1

문서를 살펴 보았지만 아직 해결 방법을 찾지 못했습니다. 응용 프로그램은 느슨하게 해당 문서의 "sayHello"-example을 기반으로하지만 코드가 실행될 때마다 Method handler for /eventComm.DatabaseRPC/InsertSingleDocument expected but not provided이라는 경고가 반환됩니다.NodeJS gRPC : "메서드 처리기가 필요하지만 제공되지 않았습니다."

내 프로토 파일 :

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

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

내 gRPC 서버 :

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() 

이 코드의 문제는 무엇입니까? 물론 이미 google the error을 시도했지만, 방법을 소문자로 첫 글자와 함께 제공되어야한다 자바 스크립트 명명 규칙을 준수하기 위해 해결책

답변

2

발견 : 당신은 당신이 연결된 안녕하세요 예에서 볼 수

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

. 메서드는 프로토 파일에 SayHello으로 선언되어 있지만 sayHello으로 서버에 전달됩니다.

참고 : 나는 이것이 혼란스럽고 I will try to improve the situation에 동의합니다.

+0

감사합니다. 나는 예제에서 lowercasing을 완전히 놓쳤다. 다른 언어에도 문제가 있습니까? 어쩌면 모든 함수가 proto 파일에서 소문자로 시작하는 이름 지정 체계를 시행하는 데 도움이 될 것입니다. – trahloff

+0

여러 언어에서 메서드 이름이 해당 언어의 명명 체계를 따를 것으로 예상되지만 이러한 명명 체계는 다를 수 있습니다. proto 파일에있는 선언은 proto 파일의 이름 지정 규칙과 일치합니다. – murgatroid99

+1

확인해 주셔서 감사합니다. 설명서에 추가 할 수 있습니까? 큰 빨간 글씨로. 지금까지 gRPC를 좋아하지만, [빠른 시작 가이드] (http://www.grpc.io/docs/quickstart/node.html#update-a-grpc-service)를 읽었을 때 나는 그 비트를 완전히 놓쳤습니다. – trahloff