Форматирование обработчиков GRPC в NodeJS - PullRequest
2 голосов
/ 30 сентября 2019

Я новичок в GRPC, и я хотел бы узнать о форматировании ошибок с использованием gRPC и NodeJS.

Всякий раз, когда нам нужно создать обработчик запросов для сервера gRPC, мы следуем этому шаблону:

 * getFeature request handler. Gets a request with a point, and responds with a
 * feature object indicating whether there is a feature at that point.
 * @param {EventEmitter} call Call object for the handler to process
 * @param {function(Error, feature)} callback Response callback
 */
function getFeature(call, callback) {
  callback(null, checkFeature(call.request));
}

Мне ясно, что такое параметр вызова и как использовать обратные вызовы.

Мой вопрос: как выглядит первое поле обратного вызова? Я думаю, что в nodeJS нет стандарта ошибок, и похоже, что это должен быть специфический формат gRPC.

Я осмотрелся и существует стандарт кодов состояния gRPC . Это поле ошибки? int, представляющий статус, или 0 (или ничего), если все нормально, нормально?

1 Ответ

2 голосов
/ 02 октября 2019

У вас есть несколько вариантов там. Как и большинство основанных на обратном вызове асинхронных API в JavaScript, этот обратный вызов принимает обычный объект JS Error. Это переведет в UNKNOWN код состояния. Вы также можете установить свойство code объекта ошибки для члена перечисления grpc.status. Например, вы можете сделать error.code = grpc.status.NOT_FOUND, чтобы отправить ошибку «Не найдено». Кроме того, вы можете установить свойство metadata объекта ошибки для экземпляра класса grpc.Metadata, чтобы отправлять дополнительные конечные метаданные вместе с ошибкой.

Кроме того, вы также можетепередать простой объект со строками details и свойствами code и metadata, которые описаны выше. Например:

callback({details: "Entry not found", code: grpc.status.NOT_FOUND});

Обратите внимание, что если все идет хорошо, этот параметр ошибки должен быть просто null.

...