想问下sequelize怎么同步查询啊?因为要查比较多的内容

想问下sequelize怎么同步查询啊?因为要查比较多的内容

我想

var sysnotice= db.sys_news.findOne();
var sysactivity= db.sysactivity.findOne();

之后

res.render("index", {
   sysnotice: sysnotice,
    sysactivity:sysactivity
});

但是sequelize用的的Promise
求要怎样才能是实现?

阅读 6.1k
3 个回答
  • 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里面

可以用bluebird的map方法

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]
    });
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题