您好我正在尝试在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文件中运行时,我得到此错误作为返回&#34; 36 | 37 |
38 | &lt;%data.forEach(function(items){%&gt; 39 |
40 | 41 |
data.forEach不是一个函数 在eval(eval at
有谁知道如何解决这个问题?
这是我上面代码的后端:
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});
});
答案 0 :(得分:1)
以下是使用foreach
和ejs
的示例示例,我希望您检查要发送回ejs
的数据,如果它是数组的话。否则请确保它是,因为foreach
是一个Array方法。
var data = {
title: 'Cleaning Supplies',
supplies: ['mop', 'broom', 'duster']
};
<强> EJS 强>
<ul>
<% data.supplies.forEach(function(value) { %>
<li><%= value %></li>
<% }) %>
</ul>
// mop
// broom
// duster
答案 1 :(得分:0)
如果您使用节点js从数据库中获取数据,请使用 async 和 awit , 因为您将数据发送到ejs文件中而没有任何值
答案 2 :(得分: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 }))
...