Как добавить пространство имен к параметру массива в node- soap? - PullRequest
0 голосов
/ 08 февраля 2020

У меня проблемы с отправкой массива с пространством имен:

У меня есть такой объект:

const body = {

    stuff: 'stuff',
    morestuff: 'morestuff',
    products: [
    {
        sku: 100,
        quantity: 1,
    },
    {
        sku: 200
        quantity: 2,
    }
    ]

}

Мой метод похож на:

const wsdlOptions = {}; // I'll come to this later

const args = {
    'tem:User': body.stuff,
    'tem:Pass': body.morestuff,
    'tem:Data': {
        'tem:Shipment_Order_Detail_Request': body.products.map((product, index) => ({
            'tem:Sku_Code': product.sku,
            'tem:Quantity': product.quantity,
        }))
    },
};

soap.createClient(endpoint, wsdlOpsions, (error, client) => {
    client.method((args, result) => {
        console.log(result);
    });
});

Чего я хочу добиться от XML, так это:

<tem:User>stuff</tem:User>
<tem:Pass>morestuff</tem:Pass>
<tem:Data>
<tem:Shipment_Order_Detail_Request>
  <tem:Sku_Code>100</tem:Sku_Code>
  <tem:Quantity>1</tem:Quantity>
</tem:Shipment_Order_Detail_Request>
<tem:Shipment_Order_Detail_Request>
  <tem:Sku_Code>200</tem:Sku_Code>
  <tem:Quantity>3</tem:Quantity>
</tem:Shipment_Order_Detail_Request>
</tem:Data>

Но я получаю вот это (Shipment_Order_Detail_Request без tem: префикс)

<tem:User>stuff</tem:User>
<tem:Pass>morestuff</tem:Pass>
<tem:Data>
<Shipment_Order_Detail_Request>
  <tem:Sku_Code>100</tem:Sku_Code>
  <tem:Quantity>1</tem:Quantity>
</Shipment_Order_Detail_Request>
<Shipment_Order_Detail_Request>
  <tem:Sku_Code>200</tem:Sku_Code>
  <tem:Quantity>3</tem:Quantity>
</Shipment_Order_Detail_Request>
</tem:Data>

Я пытался добавить

ignoredNamespaces: {
    namespaces: [],
    override: true,
},

на мой wsdlOptions, и он изменился на это:

<tem:User>stuff</tem:User>
<tem:Pass>morestuff</tem:Pass>
<tem:Data>
<tns:Shipment_Order_Detail_Request>
  <tem:Sku_Code>100</tem:Sku_Code>
  <tem:Quantity>1</tem:Quantity>
</tns:Shipment_Order_Detail_Request>
<tns:Shipment_Order_Detail_Request>
  <tem:Sku_Code>200</tem:Sku_Code>
  <tem:Quantity>3</tem:Quantity>
</tns:Shipment_Order_Detail_Request>
</tem:Data>

Теперь есть префикс, но это tns, а не tem.

Как мне достичь своей цели?

Заранее спасибо,

...