ejs 的问题(data.forEach 不是函数)!

问题描述 投票:0回答:5

你好,我正在尝试在 ejs 文件中运行 javascript 函数,这就是我的代码的样子:

<div class='row'>

<% data.forEach( function( items ) {  %>

    <div class='col-md-4 col-sm-6'>
        <div class="thumbnail">
        <img src="<%= items.img %>" width="350" height="130"></img>    

         <div class="caption">
            <h4><%= items.partname %></h4>
        </div>
        </div>



    </div>

<% }); %>

</div>

当我尝试在我的 ejs 文件中运行它时,我收到此错误作为返回“ 36| 37|

38| <% data.forEach(function(items){ %> 39|
40| 41|

data.forEach 不是一个函数 评估时(评估于

有人知道如何解决这个问题吗?

这是我上面代码的后端:

app.use(bodyParser.urlencoded({extended: true}));
  app.set("view engine","ejs");

var chairSchema=new mongoose.Schema({
    partname:String,
    img:String,
    price:Number
});

var data =mongoose.model("data",chairSchema);

data.create(
{
  partname:"short cylinder",
  img:"http://www.needforseatusa.com/assets/images/products/replacement%20parts/short_cylinder_thumbnail.jpg",
  price:14.90
},
{
  partname:"regular cylinder",
  img:"http://www.needforseatusa.com/assets/images/products/replacement%20parts/cylinder_thumbnail.jpg",
  price:14.90
},{
  partname:"back pillow",
  img:"http://www.needforseatusa.com/assets/images/products/replacement%20parts/lumbar_pillow_thumbnail.jpg",
  price:29.90
},{
  partname:"head pillow",
  img:"http://www.needforseatusa.com/assets/images/products/replacement%20parts/head_pillow_thumbnail.jpg",
  price:29.90
},{
  partname:"wheel base chrome",
  img:"http://www.needforseatusa.com/assets/images/products/accessories/hd-base-black_thumbnail.jpg",
  price:79.99
},{
  partname:"wheel base black",
  img:"http://www.needforseatusa.com/assets/images/products/accessories/hd_base_)1_thumbnail.jpg",
  price:79.99
},function(err,chair){
  if (err){
    console.log(err);
  }
  else{
    console.log("newly created chair");
    console.log(data);
  }

}


);
app.get("/",function(req,res){
    res.render('landing');
});


app.get("/campground",function(req,res){
   data.find({},function(err,data){
      if(err){
        console.log(err);
      }

    });

   res.render("campground", {data:data}); 
});
javascript foreach ejs
5个回答
6
投票

这是使用

foreach
ejs
的示例,我希望您检查发送回
ejs
的数据(如果它是数组)。否则请确保它是,因为
foreach
是一个数组方法。

var data = {    
  title: 'Cleaning Supplies',
  supplies: ['mop', 'broom', 'duster']  
};

ejs

<ul>
<% data.supplies.forEach(function(value) { %>
   <li><%= value %></li>
<% }) %>
</ul>

// mop
// broom
// duster

0
投票

如果您使用 Node js 从数据库获取数据,请使用 asyncawit , 因为您将数据发送到 ejs 文件,其中没有任何值


0
投票

我遇到了同样的问题,这就是我将数据发送到视图的方式。

所以在我查询数据库之后,如

db.getTasks()
    .then(results => res.render('view', { results: results }))
    .catch(err => ...)

我将结果返回到视图而不是行,

results.rows
返回到视图。 只需在结果中添加 .
.rows
即可解决我的问题

db.getTasks()
    .then(results => res.render('view', { results: results.rows }))
    ...

0
投票

我的 server.js 有以下代码:

res.render('index', articles: 'articles')

当我从第二篇文章中删除字符串时,错误就消失了。顺便说一下,这些文章都在花括号中。


0
投票

这是因为读取操作需要一些时间,如果不是“等待”,EJS 可能会在数据准备好之前尝试渲染模板,从而导致错误或未定义的值。 试试这个方法 async () => { const products = await Product.find() res.render('home', { user: req.user, products: products }); }

	
© www.soinside.com 2019 - 2024. All rights reserved.