格式化值并将它们放在旧值中

时间:2015-09-16 21:14:12

标签: javascript node.js

我在Node服务中有这个功能

  pendingBetsForCustomer: function(params) {
    return new Promise(function(fullfill, reject) {
      var cancel, view, fillOpen,
      connection = new sql.Connection(sails.config.connections.myConnection, function(err) {
        if (err) {
          reject(err);
        }
        var request = connection.request();
        decorateRequestParams(request, params);
        request.execute('[SP_NAME].[spREPORTS]', function(err, dataset) {
          if (err) {
            reject(err);
          }
          _.map(dataset, function(items) {
            return _.map(items, function(item) {

              cancel = item.XX_CANCEL;         
              fillOpen = item.XX_FILL_OPEN;

              parseString(cancel, function(err, res) {
                cancel = res;
              });
              parseString(fillOpen, function(err, res) {
                fillOpen = res;
              });
            });
          });

          _.forEach(dataset, function(report) {
            console.log(report); //see below what it returns
            fullfill(report);
          });
        });
      });
    });
  }

console.log(report)我得到类似的东西

[ { BET: 57630343,
    CUSTOMER: 181645,
    SPORT: 'MLB',
    XX_FILL_OPEN: '<xxfillopen xml>...</xxfillopen xml>',
    XX_CANCEL: '<xxcancel xml>...</xxcancel xml>' },
   ...
]

那些以XX_开头的道具是我需要转换为JSON的XML元素,您可以在上面看到(使用xml2js)

      _.map(dataset, function(items) {
        return _.map(items, function(item) {

          cancel = item.XX_CANCEL;
          fillOpen = item.XX_FILL_OPEN;

          parseString(cancel, function(err, res) {
            cancel = res;
          });
          parseString(fillOpen, function(err, res) {
            fillOpen = res;
          });
        });
      });

如果您在上面看到,我有cancelfillOpen现在是json而不是XML,我只需要cancel而不是XX_CANCEL: '<xxcancel xml>...</xxcancel xml>

认为cancel是具有json格式的对象,与Fill Open相同,如下所示:

{XX_CANCEL: cancel}

我期待这样的事情

[ {
    BET: 57630343,
    CUSTOMER: 181645,
    SPORT: 'MLB',
    XX_FILL_OPEN: //PUT HERE THE NEW ATTR IN JSON FORMAT,
    XX_CANCEL: //PUT HERE THE NEW ATTR IN JSON FORMAT
   },...
]

好的,现在,我有那些以XX_格式开头的道具,那么我应该怎样做才能将那些新的格式化道具换成json而不是旧格式的道格呢?

1 个答案:

答案 0 :(得分:1)

尝试使用地图功能:

      _.map(dataset, function(items) {
        return _.map(items, function(item) {

          parseString(item.XX_CANCEL, function(err, res) {
            item.XX_CANCEL = res;
          });
          parseString(item.XX_FILL_OPEN, function(err, res) {
            item.XX_FILL_OPEN = res;
          });
        });
      });

这应该用解析的JSON数据替换xml字符串。