【问题标题】:Handlebars - Error: each doesn't match else车把 - 错误:每个都不匹配
【发布时间】:2018-06-20 04:48:33
【问题描述】:

我正在尝试将我的 MongoDB 数据注入 HTML,但我不断收到以下信息: “错误:每个都不匹配”,我尝试更改几行,但仍然收到此错误,这是我第一个使用 MongoDB 或数据库的项目。 我需要更改什么才能使我的代码正常工作?是 HTML 还是节点问题?

HTML

{{#each ideas}}
 <div>
   <p>{{tip}}</p>
 </div>
{{/else}}

server.js

 const path = require('path');
 const express = require('express');
 const exphbs = require('express-handlebars');
 const bodyParser = require('body-parser')
 const mongoose = require('mongoose');
 const handlebars = require('handlebars')
 const app = express();


 //map global promise - get rid of warning
 mongoose.Promise = global.Promise;

 // connect to  mongoose
 mongoose.connect('mongodb://localhost/peppino-calc', {
   useMongoClient: true
 })
 .then(() => { console.log('MongoDB connected...')})
 .catch(err => console.log(err));

 //Load salaryModel
 require('./modles/Idea.js');
 const Idea = mongoose.model('ideas');



 //handlebars middleware
  app.engine('handlebars', exphbs({defaultLayout: 'main'}));
  app.set('view engine', 'handlebars');


  handlebars.registerHelper("toLowerCase", function(input) {
      var output = input.toLowerCase();
      return output.replace(" ", "");
  });


 //body parser middleware
 app.use(bodyParser.urlencoded({extended: false}))
 app.use(bodyParser.json())


 // post history page
 app.get('/history', (req, res) => {
   Idea.find({})
    .sort({date: 'desc'})
    .then(ideas => {
      res.render('../js/newJs/history', {
        ideas:ideas
      })
    });
 })


  //process form
  app.post('/ideas', (req, res) => {
    let errors = [];
    if(errors.length > 0) {
      console.log(errors[0]);
    } else {
      const newUser = {
        amount: req.body.totalamount,
        hours: req.body.totalhours,
        salary: req.body.totalsalary,
        tip: req.body.totaltip,
        date: req.body.datetotal
      }
      new Idea(newUser)
      .save()
      .then(idea => {
        res.redirect('/history');
      })
    }
  });

  app.use(express.static(path.join(__dirname, './js/newJs')));
  app.set('port', process.env.PORT || 5700);

  var server = app.listen(app.get('port'), function() {
    console.log('listening on port ', server.address().port);
  });

【问题讨论】:

    标签: javascript html node.js mongodb handlebars.js


    【解决方案1】:

    错误来自 Handlebars,#each 迭代器应该用 /each 关闭

    {{#each ideas}}
     <div>
       <p>{{tip}}</p>
     </div>
    {{/each}}
    

    else 可以用于当有一个空列表时,如果它在 each 部分内:

    {{#each ideas}}
     <div>
       <p>{{tip}}</p>
     </div>
    {{else}}
     <div>
       <p>none</p>
     </div>
    {{/each}}
    

    【讨论】:

      【解决方案2】:

      我知道你现在应该已经解决了这个问题,但我只想为将来可能遇到此类错误的人回答这个问题。

      查看您的代码,错误在于您的 HTML 文件(Handlebars 语法)而不是 server.js。

      您的{{#each}} 迭代器应该以{{/each}} 而不是{{/else}} 结束。

      所以你的代码应该是这样的:

        

      {{#each ideas}}
      
          <div>
      
           <p>{{tip}}</p>
      
          </div>
      
      {{else}}
      
          <div>
      
           <p>Do nothing</p>
      
          </div>
      
      {{/each}}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-12
        • 1970-01-01
        • 2013-02-05
        • 2015-09-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多