#node.js #rabbitmq #protocol-buffers #proto3
Вопрос:
Я работаю над проектом, в котором я использую nodejs и Proto3 для работы. У меня есть следующий файл proto3. где я хочу добавить версию в качестве поля.
message Request { string id = 1; string body = 4; string createdAt = 5; string updatedAt = 6; string traceId = 7; }
У меня есть дополнительная версия поля, когда я отправлял в него это поле, моя система выдавала ошибку
Expect string provided number
Поэтому я изменил его следующим образом
message Request { string id = 1; string body = 4; string createdAt = 5; string updatedAt = 6; string traceId = 7; optional int32 version = 8; }
Теперь я получаю обратную ошибку, что он ожидал целое число и получал строку. Хотя я здесь определяю int32
, что является целым числом в proto3. Я думаю, что речь идет о сопоставлении number
в nodejs и int32
в proto3. Я пытался optional float version = 8;
, но все равно получал.
Вот полная ошибка.
message="[rabbit] Request received" version_$numberLong="1" request.version: number expected" stack="Error: request.version: number expectedn
Он говорит, что ожидает номер, и клиент отправляет номер version_$numberLong="1"
. Проект очень сложный, с большими файлами, которые я просто уплотняю, чтобы показать рабочий код. Любое решение, как я могу заставить их работать вместе.
Комментарии:
1. Может ли клиент отправлять
version_$numberLong=1
без двойных кавычек?2. У меня нет доступа к клиенту, на самом деле это мобильное приложение, и тогда у нас есть
Realmapp
, так что оно исходит оттуда, должно быть номером, как показано там, но не уверен, где оно преобразовано. Я пробовал другие типыfixed32, fixed64, sfixed, and last
google.protobuf. Все, что угодно, но ничего не работает.