【问题标题】:Logic inside of EJS filteringEJS 过滤内部的逻辑
【发布时间】:2016-08-12 21:05:24
【问题描述】:

我正在尝试使用 EJS(在我的 index.ejs 文件中)进行一些简单的过滤。

  1. 如果对象为 NULL,则不在 HTML 中显示
  2. 如果对象字段“级别”包含值“1”但不包含值“2”,则在 HTML 中显示

<% for(var i=0; i<mydb.length; i++) {%> <li><%= mydb[i].menuitem %></li> <% } %>

我使用的是 express,所以如果有用的话,这是我的 server.js

app.get('/', (req, res) => {
  db.collection('mydb').find().toArray((err, result) => {
    if (err) return console.log(err)
    // renders index.ejs
    res.render('index.ejs', {mydb: result})
  })
})

【问题讨论】:

    标签: node.js express ejs


    【解决方案1】:

    在数据进入模板之前过滤数据。

    // server.js

    result = result.fillter (function(data){
      return data !== null ;
    })
    res.render('index.ejs', {db_areas: result})
    

    // index.ejs

    <% mydb.forEach(function(data){ %>
    <%   if ( level.includes("1") && !level.includes("2") ) { %>
    
           <html></html>
    
    <%   } %>
    <% }) %>
    

    8/12 编辑:

    在数据进入模板之前过滤数据。

    您应该在过滤数据后输入您的res.render('index.ejs', {db_areas: result})。所以你的表达顺序应该是这样的:

    // server.js

    result = result.fillter (function(data){
      return data !== null ;
    })
    res.render('index.ejs', {db_areas: result})
    

    【讨论】:

    • 我的 node.js(我称之为 server.js)在哪里?我试过没有成功。我在第 45 行粘贴了我的代码 (dpaste.com/0X9SEW0)
    • 在数据进入模板之前过滤数据。我编辑了我的答案,看看。重新排列您的代码,它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 2017-06-27
    • 1970-01-01
    • 2020-09-30
    • 2018-03-10
    • 2018-05-15
    相关资源
    最近更新 更多