首页 > 解决方案 > 使用 Node JS 将对象数组映射到 Protobuf 时出现空响应

问题描述

下面是我的示例 API 响应,它是一个对象数组。我正在尝试使用以下步骤在 protobuff 中转换此响应。但它总是给我空洞的回应。

    [
    {
    travels: "Kallada Travels (Suresh Kallada)",
    busType: "Volvo A/C MultiAxle Semisleeper (2+2)",
    source: "Angamaly",
    opId: "0003",
    image_url: null,
    ratings: {},
    approvedImageCount: 0,
    images: []
    }
   ]

脚步:

    protobuf.load("common/protos/"+modelName+".proto",function(err,root){

    if(err) {
      return next()
    }
    var messageType = codeConfig['protoFileMapping'][modelName][reqPath];
    console.log('messageType',messageType)

    var protoMessage = root.lookupType(messageType);
   // console.log('protoMessage',protoMessage)

    var jsonResp = JSON.parse(JSON.stringify(ctx.result));
    console.log('jsonResp',jsonResp);

    var errMsg = protoMessage.verify(jsonResp);
    console.log('errMsg',errMsg)
    if (errMsg){
      return next();
    }


    //problem starts here
    var msg = protoMessage.create(jsonResp);
    console.log('msg',msg)


    var buffer = protoMessage.encode(msg).finish();
    console.log('buffer',buffer)

回复:

控制台日志中的 msg 有点像下面:

   msg getReviewsResp {
   '0': 
   { travels: 'Kallada Travels (Suresh Kallada)',
     busType: 'Volvo A/C MultiAxle Semisleeper (2+2)',
     source: 'Angamaly',
     opId: '0003',
     image_url: null,
     ratings: {},
     approvedImageCount: 0,
     images: [] },
    response: [] }

理想情况下,msg 应与 API 响应相同,并且缓冲区不应为空。

   buffer <Buffer >

标签: javascriptnode.jsprotocol-buffersprotobuf-netprotobuf.js

解决方案


推荐阅读