我在req.query.p
中从我的前端MVC框架发送查询参数作为JSON格式,关键是这可能是动态键和值,例如:
req.query.p = {nombre : 'juan'}
或
req.query.p = {pais : 'chile'}
所以我需要键,以及将它们放在where语句中的值,就像这样
exports.select = function(req, res){
console.log('=> GET | Obtener peliculas'.bold.get);
db.Pelicula
.findAndCountAll({
limit : req.query.limit,
offset : req.query.offset,
where : req.query.p ? [req.query.p.KEY + " = ?", req.query.p.VAL] : null
})
.success(function(resp){
console.log(JSON.stringify(resp.rows, null, 4).bold.get);
res.json({peliculas : resp.rows, meta : { total : resp.count}});
});
}
答案 0 :(得分:5)
where参数可以是一个对象,因此您只需传递where: req.query.p
答案 1 :(得分:0)
通常,我放置整个对象,因此,如果它为空,它将正常工作,就好像没有条件WHERE。 您不需要在where中添加{},因为来自req.query的对象已经有了它。
const filter = req.query;
example= await ModelExample.findAndCountAll({
where:
filter
})
答案 2 :(得分:0)
使用 ES6 并使用动态属性,我会这样做
const { Op } = require("sequelize");
const from = new Date()
// const to = new Date().setMinutes(40)
const to = null
let where = {
timestamp: {
[Op.or]: {}
}
}
if (from) {
where.timestamp[Op.or][Op.gte] = new Date(from)
}
if (to) {
where.timestamp[Op.or][Op.lte] = new Date(to)
}
console.log(where);
Model.find({ where })