卡在JSON嵌套对象和放大器之间Nodejs中的回调

时间:2016-10-01 17:13:30

标签: javascript json node.js callback

我的应用程序调用模块来解析嵌套的JSON对象,以读取2个键的值。

parseData(str, function (error, str) {
    if (err) {
        console.log("Error - parseData : ", err);
    } else {
        console.log(str);
    }

parseData模块如下

function parseData(str, callback) {

  function recursiveFunction(obj) {
    var keysArray = Object.keys(obj);

    for (var i = 0; i < keysArray.length; i++) {
      var key = keysArray[i];
      var value = obj[key];

      if (value === Object(value)) {
        parseData(value);
      } else {
        if (key == 'title') {
          title = value;
        }

        if (key == 'extract') {
          var extract = value.replace(/(\r\n|\n|\r)/gm," ");
          callback(null, JSON.stringify('{"title":'+ title + ', "text":' + extract));
        }
      }
    }
  }

  recursiveFunction(str);

}

但它显示以下错误

/modules/parseData.js:22
               callback(null, JSON.stringify('{"title":'+ title + ',    "text":' + extract));
               ^

TypeError: callback is not a function

为什么回调失败?如何返回JSON对象?

修改

代码中存在一些错误,现在已经纠正。

   function parseData(str, callback) {
       function recursiveFunction(obj) {
           var keysArray = Object.keys(obj);

           for (var i = 0; i < keysArray.length; i++) {
               var key = keysArray[i];
               var value = obj[key];

               if (value === Object(value)) {
                   recursiveFunction(value);
               } else {
                   if (key == 'title') {
                       title = value;
                   }

                   if (key == 'extract') {
                       var extract = value.replace(/(\r\n|\n|\r)/gm," "); 
                       callback(null, JSON.stringify('{"title":'+ title + ', "text":' + extract));
                   }
               }
           }
       }
       recursiveFunction(str);
    };

1 个答案:

答案 0 :(得分:0)

您正在调用parseData(value);而不是通过回调;如果您希望使用原始回调,请传递callback