2017-03-09 52 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

使用JavaScript命名惯例接轨,方法应提供小写的第一个字母:

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

您可以在您链接的Hello World例子看看这个。该方法在原始文件中声明为SayHello,但作为sayHello传递给服务器。

注:我同意这是令人困惑的,并且I will try to improve the situation

+0

谢谢。我完全错过了榜样中的低调。它也是其他语言的问题吗?也许这将有助于强制执行一个命名方案,其中所有函数都是在proto文件中用起始小写字母来声明的。 – trahloff

+0

在多种语言中,有一些期望方法名称将遵循该语言的命名方案,但这些命名方案可能不同。您在proto文件中的声明符合proto文件的命名约定。 – murgatroid99

+1

好的,谢谢澄清。可以将它添加到文档中吗?在大红色字母。我喜欢gRPC,但当我阅读[快速入门指南](http://www.grpc.io/docs/quickstart/node.html#update-a-grpc-service)时,我完全错过了这一点。 – trahloff

相关问题