我是Node.js的新手请原谅我犯了一些错误。 我正在使用带有MongoDB的node.js来创建一个应用程序。
我已经在我的快递应用程序的modules文件夹中定义了DBUtils中的两个函数,一个自定义的DBUtils.find()和另一个DBUtils.getEventResults。
请参阅以下代码:
var Date ="";
var async = require("async");
async.series([
dbutils.find(mongourl + "/" +dbName, eventTableName, {"status":"A"}, {"date":1} , 1, function(err, result) {
if (err) {
res.render('evententries', { err:'No events to show!', hostname:req.headers.host });
} else if (result.length <= 0) {
res.render('home', {hostname:req.headers.host});
} else {
var entryTableName = config.get('entryTableName');
dbutils.getTeamResults(mongourl + "/" +dbName, entryTableName, function(err, data) {
if (err) {
res.render('home', {hostname:req.headers.host, err:"Temporary Error"});
} else {
data.sort(function(a, b){return (parseInt(a.totalregs)+parseInt(a.totalwins)) < (parseInt(b.totalregs)+parseInt(b.totalwins));});
//data.sort(sortResults);
//data= results();
//console.log('Last winner was : ', data[0]);
console.log('Result was : ', data[0]);
console.log('time : ', result[0].date);
Date =result[0].date;
console.log('time : ', Date);
//res.render('home', {hostname:req.headers.host, nextEvent:result[0].date, teamresults:data});
}
});
}
}),
dbutils.getEventResults(mongourl + "/" + dbName, entryTableName, function(err, data) {
var Date = "";
if (err) {
res.render('home', {hostname:req.headers.host, err:"Temporary Error"});
} else {
//data.sort(function(a, b){return parseInt(a._id) < parseInt(b._id);});
data.sort(sortResults);
console.log('Result was : ', data[0]);
console.log('Result was : ', data[1]);
console.log('Result was : ', data[2]);
console.log('DATE : ', Date);
//res.render('events', {hostname:req.headers.host, eventresults:data});
res.render('home', {hostname:req.headers.host, nextEvent:Date, teamresults:data});
}
}),
]);
function sortResults(a, b) {
var eventId1 = parseInt(a._id);
var eventId2 = parseInt(b._id);
var diff = eventId2-eventId1;
if( diff > 0 ) {
return 1;
} else {
return -1;
}
}
我想要的是dbutils.find首先执行并设置 Date 变量,然后dbutils.getEventResults也执行并传递 Date 作为参数,同时渲染相应的玉模板。
但由于某种原因,首先执行dbutils.getEventResults,然后渲染页面,然后调用dbutils.find。
请告诉我方法或其他替代方法的漏洞,将find()中的Date参数集传递给getEventResults。
提前感谢您的帮助!