Кодирование и декодирование протокольного сообщения не работает с модулем protobujs
Я пытаюсь запустить простую программу для создания прото-сообщения с модулем protobufjs. А также попробуйте сделать кодирование и декодирование с API-интерфейсом protobufjs. Но я не могу увидеть закодированное и декодированное сообщение, если я его распечатал.
Вот простое определение сообщения //smallbank.proto
syntax = "proto3";
message SmallbankTransactionPayload {
message CreateAccountTransactionData {
uint32 customer_id = 1;
string customer_name = 2;
uint32 initial_savings_balance = 3;
uint32 initial_checking_balance = 4;
}
enum PayloadType {
PAYLOAD_TYPE_UNSET = 0;
CREATE_ACCOUNT = 1;
}
PayloadType payload_type = 1;
CreateAccountTransactionData create_account = 2;
}
Вот программа nodejs //test.js
var protobuf = require('protobufjs')
protobuf.load("smallbank.proto", function(err, root) {
if (err)
throw err;
var sbpayload = root.lookupType("SmallbankTransactionPayload");
var account = {
payload_type: sbpayload.PayloadType.CREATE_ACCOUNT,
create_account: {
customer_id: 1,
customer_name: 'rajkumar',
initial_savings_balance: 100000,
initial_checking_balance: 100000
}
};
paylod_err = sbpayload.verify(account);
if(paylod_err )
throw paylod_err;
var message = sbpayload.create(account);
var buf = sbpayload.encode(message).finish();
console.log('test message:', account)
console.log('encoded test message:', buf)
console.log('encoded test message decoded:', sbpayload.decode(buf));
});
Вывод вышеуказанной программы $node test.js
тестовое сообщение: { payload_type: 1, create_account: { customer_id: 1, customer_name: 'rajkumar', initial_savings_balance: 100000, initial_checking_balance: 100000 } }
закодированное тестовое сообщение:
закодированное тестовое сообщение расшифровано: SmallbankTransactionPayload {}
Используемые API, перечисленные здесь - https://www.npmjs.com/package/protobufjs Я использую версию узла - v8.11.1 protobufjs версия 6.8.6
Пожалуйста, кто-нибудь, помогите мне, что здесь пошло не так?