2016-03-22 19 views
0

Bir alanı XML'de node-soap kullanarak bir yanıtta dönüştürürken, bir alan içeriyor olsa bile bir alan olmasını zorunlu kılmak istiyorum.node-soap force dizisi bir alan içeriyorsa

Sadece bir çocuk olduğunda, bir alan nesne olarak yorumlanır. Aşağıda bir örnek bakın:

// Below gives {ArrayOfItems: {Item: { name: 'foo', ... }} 
// But I'd like it to be {ArrayOfItems: {Item: [{name: 'foo', ... }]} 
<ArrayOfItems> 
    <Item> 
    ... 
    </Item> 
</ArrayOfItems> 

// Below gives {ArrayOfItems: {Item: [{ name: 'foo', ... }, { name: 'bar', ... }]} 
<ArrayOfItems> 
    <Item> 
    ... 
    </Item> 
    <Item> 
    ... 
    </Item> 
</ArrayOfItems> 

nasıl itiraz etmek xml den dönüştürüldüğünde alanım bir dizi olarak ayrıştırılması için zorlayabilirsiniz?

cevap

1

Aynı sorunu hem LoopBack Enterprise SOAP bağlayıcısında hem de düğüm sabununda bulundum.

function forceArray(array) { 
     if (!array || Array.isArray(array)) 
     return array; 
     else 
     return [array]; 
} 

yardımcı olur mu:

buldum en kolay çözüm şunları yapar basit bir yöntem var mıydı?

+0

Evet, bir şeyi diziye dönüştürmek için bir işlev yazmayı bitirdim. Ama bu hacky gibi görünüyor. Başka çözümler var mı? –

+0

node-soap kodunu, sizin için bunu gerçekleştirmek üzere * forceArray * seçeneğini kabul etmek üzere değiştirebilirsiniz ... ancak sonra - hangi seviyede diziyi zorlayacak? sadece üstte? Üst nesnelerin her çocuğu için? çok özel bir uygulama –

İlgili konular