我有一个保存在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。所以我想知道是否与它有关