loopback XML响应数组呈现为单个条目

时间:2016-07-18 14:35:46

标签: xml node.js loopbackjs

我想返回一个国家列表,作为我在loopback.js框架上构建的XML API的一部分。我正在构建一个国家/地区对象数组,然后将其分配给响应对象

        var regions=[];
        for (var index in data.regions)
        {
            var country=data.regions[index];
            regions.push({country:{
                    code:country.code,
                    name:country.name
                }
            });
        }
        result.restricted_countries=regions;

当我转储结果时,数组看起来很好

[ { country: { code: 'AE', name: 'United Arab Emirates' } },
  { country: { code: 'AF', name: 'Afghanistan' } } ]

然而,当我将结果呈现为XML时,每个国家/地区都被包含在其自己的restricted_country节点中

<restricted_countries>
    <country>
        <code>AE</code>
        <name>United Arab Emirates</name>
    </country>
</restricted_countries>
<restricted_countries>
    <country>
        <code>AF</code>
        <name>Afghanistan</name>
    </country>
</restricted_countries>

显然我预计它会

<restricted_countries>
    <country>
        <code>AE</code>
        <name>United Arab Emirates</name>
    </country>
    <country>
        <code>AF</code>
        <name>Afghanistan</name>
    </country>
</restricted_countries>

当我将响应类型更改为JSON时,它按预期工作。

我使用loopback的默认XML渲染器,只需在配置中设置"rest": {"xml": true}即可。我不确定它在内部使用哪个库,以及是否可以以某种方式配置它。

1 个答案:

答案 0 :(得分:1)

摆脱像

这样的区域数组中的包装country
regions.push({
    code:country.code,
    name:country.name
});

并将其添加为结果

的基础
result.restricted_countries={country:regions};

这使得一个不太合乎逻辑的JS对象,但呈现了一个预期的XML。我不确定我是修复了这个bug还是引入了另一个但仍然是..