问题描述
问题解答
回答1:findeOne返回的是一个promise, 你上面的代码执行有用???
const [sysnotice, sysactivity] = await Promise.all([db.sys_news.findOne(), db.sysactivity.findOne()]);res.render('index', { sysnotice: sysnotice, sysactivity:sysactivity});
如果不用await,就用下面的code
Promise.all([db.sys_news.findOne(), db.sysactivity.findOne()]).then(result => { const [sysnotice, sysactivity] = result; res.render('index', { sysnotice: sysnotice, sysactivity:sysactivity }); }).catch(error => console.error(error));
如果数组很多的话,利用其它的方法返回一个数据,不要一个一个手动的array里面
回答2:可以用bluebird的map方法
回答3:ES6
采用co模块
const co = require(’co’);co(function *(){ let sysnotice = yield db.sys_news.findOne(); let sysactivity = yield db.sysactivity.findOne(); res.render('index', {sysnotice: sysnotice,sysactivity:sysactivity });})
ES5采用bluebird模块
var Promise = require(’bluebird’);Promise.all([db.sys_news.findOne(), db.sysactivity.findOne()]).then(function(results){ res.render('index', {sysnotice: results[0],sysactivity:results[1] });})