格式化值,并把它们,而不是旧的

我在Node服务中有这个function

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,我所需要的是放置取代XX_CANCEL: '<xxcancel xml>...</xxcancel xml>

认为取消是与JSON格式的对象和填充打开相同,如下所示:

{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_格式开头的道具,那么我该怎么做才能把这些新格式化的道具replace成XML格式的旧格式呢?

试试你的地图function:

  _.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数据replacexmlstring。