获取Sequelize Promise的内容而不执行它
我知道这可能是一个奇怪的问题,从现在开始我很抱歉。
让我们来像我这样一个容易的东西。
let query = User.findAll({where: {name: 'something'}})
有没有一种方法可以让我访问query
的内容。 而内容的意思是使用User.findAll
生成的事实,我不关心User.findAll
.then()
的结果。
尝试使用options.logging在运行查询loggingsql时执行的函数。
文档Model.findAll
码:
const promise = User.findAll({ logging: (query, obj) => { console.log("QUERY: ", query, "\n\nOBJ: ", obj); }, where: { name: 'something', }, });
输出:
QUERY: Executing (default): SELECT `id`, `name` FROM `users` AS `user` WHERE `user`.`name` = `something`; OBJ: { logging: [Function: logging], plain: false, raw: false, showWarnings: false, where: '`user`.`name` = `something`', hooks: true, rejectOnEmpty: false, attributes: [ 'id', 'name' ], tableNames: [ 'users' ], type: 'SELECT', model: user }
更新:[回复评论]
我不知道什么,但你可以使用这样的事情:
import DB from 'sequelize-connector'; // this is middleware // app.use(this middleware) export default (req, res) => { const promise = DB.user.findAll({ logging: (query, obj) => { // here all your staff with req or res // get something from req // req.next() // or res.send(something) // or throw new Error ... req.next(); }, where: { id: 1, }, }); };