在节点js中将数据类型递归设置为对象属性

时间:2019-07-16 23:11:34

标签: javascript node.js xml

我有一个保存在MongoDB数据库中的对象,但是我需要文档具有除字符串以外的其他数据类型。

我首先得到一个xml并将其解析为xml-js中的json对象。

但是,所有属性默认情况下都变为字符串。 产生的解析返回这样的文档

     { 'cfdi:Comprobante':
       { _attributes:
          { 
            Version: '3.3',
            Serie: '2019',
            Folio: '467',
            Fecha: '2019-06-25T10:56:20',
            FormaPago: '03',  
           CondicionesDePago: '7 dias',
            SubTotal: '45000.00',
            Moneda: 'MXN',
            Total: '52200.00',
            TipoDeComprobante: 'I',
            MetodoPago: 'PUE',
            LugarExpedicion: '06600',
            'xmlns:cfdi': 'http://www.sat.gob.mx/cfd/3',
         },
         'cfdi:Emisor': { _attributes: [Object] },
         'cfdi:Receptor': { _attributes: [Object] },
         'cfdi:Conceptos': { 'cfdi:Concepto': [Object] },
         'cfdi:Impuestos': { _attributes: [Object], 'cfdi:Traslados': 
      [Object] },
         'cfdi:Complemento': { 'tfd:TimbreFiscalDigital': [Object] } } }

在我的MongoDB数据库中,它会将所有字段都声明为String类型,因此我使该函数将Number类型分配给了它所对应的任何字段:

   var obj = convert.xml2js(xml,{ compact : true,  spaces: 4,ignoreDeclaration : true});

    const value = ["0","1","2","3","4","5","6","7","8","9","0"]
var iter = function thing(obj){
        var s;
        var result = obj
        Object.values(result).forEach(function(key) {
            s = result[key];


        for(var i= 0 ; i<value.length;i++){
            if (JSON.stringify(s).charAt(1) == value[i]){
                s= Number(s)
            }
        }
        if (typeof(result[key]) == "object" && result[key] !== null){
                thing(obj[key]);
        }
    });
    return result
    }

但是,似乎并没有让我访问应该是具有正确数据类型的对象的结果。 我知道它会在某些迭代中抛出NaN。所以我想知道是否与它有关

0 个答案:

没有答案