Node.js 将ejs中的键值数组与组合选定值进行比较

Node.js 将ejs中的键值数组与组合选定值进行比较,node.js,ejs,Node.js,Ejs,我有一个route js,其中我定义了如下get函数: exports.get = function (req, res) { var calls = [{ propertyTypes: function (acc) { return '/catalog/propertyTypes/'; }, }]; commercial_residential = { 1 : 'Residencial', 2 : 'Comerci

我有一个route js,其中我定义了如下get函数:

exports.get = function (req, res) {
var calls = [{

    propertyTypes: function (acc) {
        return '/catalog/propertyTypes/';

    },

}];

    commercial_residential = {
        1 : 'Residencial',
        2 : 'Comercial'
    }

    property_types = [
        [
            [4  , "departamento"],
            [5  , "campo"],
            [8  , "casa"],
            [13 , "duplex"],
            [43 , "casa"],
            [47 , "departamento"],
            [49 , "campo"],
            [50 , "Terreno"],
            [53 , "departamento"],
            [63 , "ph"]
        ],[
            [1  , "Local"],
            [2  , "Quinta"],
            [3  , "Cochera"],
            [4  , "Galpon"],
            [5  , "emprendimiento"],
            [6  , "Lote"],
            [7  , "Oficina"],
            [9  , "Fondo de Comercio"],
            [10 , "Galpon"],
            [12 , "fondo de comercio"],
            [13 , "fondo de comercio"],
            [79 , "fondo de comercio"]
        ]
    ]

fetcher.getWithDependencies(calls, function (err, results) {
    var propertyTypes = (results.propertyTypes) ? results.propertyTypes : [];
[];

    fetcher.get('/ilist/importer/get/property/' + id, function (e, results) {
        res.render('ilist-importer/property', {
            'data': results,
            'list': {
                'propertyQR': propertyTypes,
                'propertyTypes': property_types,
            }
        });
    });
})
};
var propertyTypeID = [];

<% list.propertyQR.forEach(function(property) { %>
    propertyTypeID.push({
        id: <%- JSON.stringify(property.id) %>,
        name: <%- JSON.stringify(property.name) %>
    });
<% }); %>
在这个get函数的表单中,在ejs文件中,我有一个组合框,其中显示所有属性类型名称。提交表单时,我需要将所选值属性_类型名称与route.js中的键值数组属性qr进行比较。 这是我的表格选择:

   <select name="comercial" id="comercial_form" class="span3">
              <option value="0">-Seleccione-</option>
                <% for(var i=0; i < list.propertyTypes[1].length; i++) { %>                            
                   <option value="<%= list.propertyTypes[1][i][1] %>">                          
                     <%= list.propertyTypes[1][i][1] %>
              </option>
                    <% } %>
                </select>
这是我到目前为止所拥有的。首先,我尝试将从route.js获取的PropertyQR数组复制到一个新的数组PropertyTypeID中,然后在表单提交时,将表单中的选定值与我创建的键值数组名称字段进行比较,如果匹配,则获取id字段

  <script>

        $(function () {
  var propertyTypeID = [];

  for(var i=0; i< <%= list.propertyQR.length%>; i++){

            propertyTypeID.id.push(<%= list.propertyQR[i].id %>)

            propertyTypeID.name.push(<%= list.propertyQR[i].name %>)

            };

 $('#submit-import-form').click(function(){
    for(var i=0; i < propertyTypeID.length; i++){

                if (tipoPropiedad==propertyTypeID[i].name)

                    propertyTID=propertyTypeId[i].id;

                }
}
  });

    </script>
现在,当我尝试加载表单时,我得到:

未捕获的TypeError:无法读取未定义的属性“push”


为什么会这样?请帮忙

请记住,EJS代码是在服务器上运行的,它会生成客户端JavaScript代码,该代码完全独立运行,而不需要了解EJS环境。您可以通过查看返回到浏览器的内容来查看EJS生成的内容

此代码有几个问题:

var propertyTypeID = [];

for(var i=0; i < <%= list.propertyQR.length%>; i++){

        propertyTypeID.id.push(<%= list.propertyQR[i].id %>)

        propertyTypeID.name.push(<%= list.propertyQR[i].name %>)

        };
我不确定这个循环是否有必要。您可能只需要使用var propertyTypeID=即可。这取决于你到底想做什么

还有其他问题,例如propertyTypeID中的逗号、长度