为什么数组中的元素在引号内用逗号分隔?

时间:2019-06-01 17:47:45

标签: javascript mysql express

基本上,我正在使用数据库转储.sql文件来重新创建数据库。每行都包含一些整数值,并以varchar结尾,varchar是国家/地区名称。当在app.js中呈现索引页面时,所有国家/地区名称都会进入一个下拉列表。但是,有一个国家/地区的名称中带有逗号,即使逗号位于引号中,当呈现时,它也会部分显示为几个不同的国家/地区在逗号上分开。

该国家/地区在数据库中的书写方式为:

'UK - NI, Channel Islands, Highlands & Islands'

但在下拉列表中显示为:

UK - NI
Channel Islands
Highlands & Islands

在app.get(“ /”,(req,res)函数中,我有一个名为destinations的数组,该数组在数据库中附加了每个国家/地区。我尝试在函数内打印目标,但它们总是出现在顺序(有问题的国家作为一个条目出现)。我认为在渲染页面时出现问题,但是我无法弄清楚为什么或如何解决它。

首先,app.js:

app.get("/", (req, res) =>{
    var destinations = [];
    ...
    // in the db query:
    rows.forEach((row) => {
          destinations.push(row.country);
     });
    // then I'm querying some other int values that have nothing to do with it
    // and at the end of app.get:
    res.render("index.hbs",{destinations:destinations});

对不起,我不允许显示完整代码。

dump.sql:

(2,'other',0,30,31,33,,0,0,2,'UK - NI, Channel Islands, Highlands & Islands'),

index.hbs:

<script type="text/javascript">
    var destinations = '{{destinations}}'.replace(/&amp;/g, 
                       '\&').replace(/&#x27;/g,'\'').split(',');
    var dropdown = document.getElementById('pickup_selector');
    for (var country in destinations) {
        var country_option = document.createElement("OPTION");
        country_option.setAttribute("id",destinations[country]+"_option");
        country_option.textContent = destinations[country];
        country_option.setAttribute("value",destinations[country]);
        dropdown.appendChild(country_option);
    };
</script>

下拉列表中的预期结果:

    country1
    UK - NI, Channel Islands, Highlands & Islands
    country3, ...

实际结果:

    country1
    UK - NI
    Channel Islands
    Highlands & Islands
    country3...

更新: 从index.html删除拆分后,现在会在每个符号上拆分国家。因此,每个符号(天气是字母,空格或逗号)在下拉菜单中都有其自己的选项。

0 个答案:

没有答案