Проблема в ошибке типа данных формата файла proto3

#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. Все, что угодно, но ничего не работает.