【发布时间】:2019-09-16 03:03:51
【问题描述】:
我正在尝试使用 this 教程创建一个简单的 Notes CRUD API。该教程声称从客户端调用服务器中的List 方法(node get_notes.js)应该返回notes 数组,但我总是得到一个空对象。
server.js
const grpc = require('grpc')
const protoLoader = require('@grpc/proto-loader')
const packageDefinition = protoLoader.loadSync('notes.proto');
const notesProto = grpc.loadPackageDefinition(packageDefinition);
const notes = [
{ id: '1', title: 'Note 1', content: 'Content 1'},
{ id: '2', title: 'Note 2', content: 'Content 2'}
]
const server = new grpc.Server()
server.addService(notesProto.NoteService.service, {
list: (_, callback) => {
callback(null, notes)
},
})
server.bind('127.0.0.1:50051', grpc.ServerCredentials.createInsecure())
console.log('Server running at http://127.0.0.1:50051')
server.start()
client.js
const grpc = require('grpc')
const protoLoader = require('@grpc/proto-loader')
const packageDefinition = protoLoader.loadSync('notes.proto');
const notesProto = grpc.loadPackageDefinition(packageDefinition);
const NoteService = notesProto.NoteService
const client = new NoteService('localhost:50051',
grpc.credentials.createInsecure())
module.exports = client
get_notes.js
const client = require('./client')
client.list({}, (error, notes) => {
if (!error) {
console.log('successfully fetch List notes')
console.log(notes)
} else {
console.error(error)
}
})
notes.proto
syntax = "proto3";
service NoteService {
rpc List (Empty) returns (NoteList) {}
}
message Empty {}
message Note {
string id = 1;
string title = 2;
string content = 3;
}
message NoteList {
repeated Note notes = 1;
}
【问题讨论】: