我的forEach循环在尝试从数据库(mongodb)中获取数据时无法在ejs文件中工作,它包含一个集合,即campground。但是当我将一个对象集合存储在myapp.js代码中的数组中时,它工作正常。但是当我尝试通过将数据存储在数据库中来实现时,它显示了 campground.forEach不是函数
的错误这是我的代码:
myapp.js
var express=require("express");
var app=express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended:true}));
var mongoose = require('mongoose');
mongoose.connect("mongodb://localhost/campit");
var campgroundSchema=new mongoose.Schema({
name:String,
image:String
});
var campground=mongoose.model("campground",campgroundSchema);
app.get("/create",function(req,res){
campground.find({},function(err,campgrounnd){
if(err){
console.log(err);
}
else{
res.render("index.ejs",{campground:campground});
}
})
});
app.listen("3000",function(){
console.log("listening from server 3000");
});
index.ejs文件,该文件应该呈现并且包含for.Each循环
<div class="container">
<div class="row no-gutters">
<% campground.forEach(function(camp){ %>
<div class="col col-lg-4 img-thumbnail">
<img class="but" height="75%" width="100%" src="<%=camp.image%>" alt="image">
<div class="text-center">
<h6><%= camp.name %> </h6>
<button class="btn btn-outline-info " type="button" name="more info"> more info</button>
</div>
</div>
<% }); %>
</div>
</div>
任何帮助都会得到高度重视。.谢谢 console.log the campground
答案 0 :(得分:4)
MongooseJS中的find方法返回一个Query对象(引用)。您可以通过几种方式进行搜索并返回结果。
campground.find().exec(function(err,result){
if(err){
console.log(err);
}
else{
res.render("index.ejs",{campground:result});
}
});
答案 1 :(得分:0)
我认为您的变量名冲突
var campground=mongoose.model("campground",campgroundSchema); // here is a campground
app.get("/create",function(req,res){
campground.find({},function(err,result /* <-- */){ // the result is also campgrounnd
if(err){
console.log(err);
}
else{
res.render("index.ejs",{campground:result/* <-- */}); // pass result instead campgrounnd
}
})
});