这是我在js文件中的代码。。结果存储在数组result中,我可以通过console.log(在js文件中(看到这一点。。。。我想把结果打印到我的ejs文件中。。你能指导我怎么拿这个吗。。
我的js文件包含如下所示的排序函数:
function sortEvents(){
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db)
{
if (err) throw err;
var dbo = db.db("mydb");
var mysort = { entryfees: -1 };
dbo.collection("eventtrans").find().sort(mysort).toArray(function(err, result)
{
if (err) throw err;
console.log(result);
db.close();
return(result);
})
})
}
module.exports = sortEvents;
我的app.js文件如下
sortEvents被调用并且它正常工作,正如我在控制台中看到的console.log值
sortEvents = require("./sortevent.js");
app.get("/prlist",function(req,res){
console.log("inside prlist")
var result=sortEvents();
res.render("prlist.ejs",{prlist:result});
});
我的ejs-prlist.ejs文件如下。。我正在尝试在ejs屏幕中打印结果值。。也包含了ejs标签。。但它没有识别prlist。。。
<% prlist.forEach(function(abc){ %>
<div class="col-md-4 col-sm-6">
<div >
<h6><%= abc._id %></h6>
<h6><%= abc.eventname %></h6>
<hr>
</div>
</div>
<% }); %>
when i run the app.js , the error i am getting is like below
TypeError: C:SurenNewProjectviewsprlist.ejs:22
20|
21| <div class="row text-center" style="display:flex; flex-wrap: wrap;">
>> 22| <% prlist.forEach(function(abc){ %>
23| <div class="col-md-4 col-sm-6">
24| <div >
25| <h6><%= abc._id %></h6>
Cannot read property 'forEach' of undefined
at eval (C:SurenNewProjectviewsprlist.ejs:11:15)
could you pls help where i am going wrong..
我把代码改成这样了。。但无济于事。。
app.get("/prlist",function(req,res){
console.log("inside prlist")
//var result= sortEvents();
sortEvents(function(result) {
console.log(results);
// Code that depends on 'result'
res.render("prlist.ejs",{prlist:result});
});
});
我的js文件现在看起来是
function sortEvents(result){
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db)
{
if (err) throw err;
var dbo = db.db("mydb");
var mysort = { entryfees: -1 };
dbo.collection("eventtrans").find().sort(mysort).toArray(function(err, result)
{
if (err) throw err;
console.log("inside sortevent");
console.log(result);
db.close();
return(result);
})
})
}
您的sortEvents函数没有正确触发您传入的回调。
这是因为你是:
- 通过将多个变量命名为result来隐藏包含回调的结果变量
- 实际上并没有调用回调函数,而是试图返回它
看看下面我对您的更新代码进行了略微修改的版本。我有:
- 将
sortEvents
函数的result
参数重命名为callback
- 在异步查询结果处理程序结束时调用
callback
function sortEvents(callback){
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
var mysort = { entryfees: -1 };
dbo.collection("eventtrans").find().sort(mysort).toArray(function(err, result) {
if (err) throw err;
console.log("inside sortevent");
console.log(result);
db.close();
callback(result);
})
})
}