在模式猫鼬中遍历数组字段

时间:2020-08-03 03:19:12

标签: javascript node.js mongodb express ejs

所以我有一个包含名称和部门的社区模式,部门字段具有类型数组..我该如何根据名称字段在下拉列表中呈现部门。

这是我的routes.js

<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

这是我的社区架构

router.get('/setup', (req, res,next) => { 

  Community.find(function(err, data) {
    res.render('setup', {
        community: data,

    });
});
});

这是我的setup.ejs

const CommunitySchema = new mongoose.Schema({
  name: {
    type: String
  },
  department: [{
    type: String
  }]
    
});

**这是数据**

 <label for="fullname"><strong>What department do you belong to ?</strong></label>
                    <select class="form-control" id="community" name="community">
                     <optgroup label="Select Table">
                     <% community.forEach(function (practice) { %>
                       
                     <option >  <%= practice.department.pop() %>   </option>  
                     <% }) %>>
                     </optgroup>
                    </select>

我正在尝试创建一个依赖下拉列表,希望我的问题得到理解

1 个答案:

答案 0 :(得分:0)

请勿在您的阵列上执行pop操作

以这种方式尝试,代码可能会出现语法错误,但是您应该在departments数组上循环以在select元素内创建选项。

<label for="fullname"><strong>What department do you belong to ?</strong></label>
<select class="form-control" id="community" name="community">
    <optgroup label="Select Table">
        <% community.forEach(function (practice) { %>
            <% practice.departments.forEach(function (dept) { %>
                <option>  <%= dept %>   </option>
            <% }) %>> 
        <% }) %>>
    </optgroup>
</select>

(我的假设如下)

我不确定您的问题的预期输出是什么,但是我认为您希望在选择下拉列表中看到类似下面的内容,如果可以,那么上面的代码将无法给出结果。

|- Engineering
|--- Electrical engineering
|--- Mechanical engineering
|--- Chemical engineering
|- Arts
|--- Philosophy
|--- Theatre arts
|--- English

使用以下内容

<label for="fullname"><strong>What department do you belong to ?</strong></label>
<select class="form-control" id="community" name="community">
    <% community.forEach(function (practice) { %>
        <optgroup label="<%= practice.name %>">
            <% practice.departments.forEach(function (dept) { %>
                <option>  <%= dept %>   </option>
            <% }) %>> 
        </optgroup>
    <% }) %>>
</select>