如何将我的结果数组从JS文件带到我的ejs页面.给出了完整的代码细节



这是我在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);
})
})
}

相关内容

  • 没有找到相关文章