我想基于flag在Sequalize中添加“where”查询。让我知道如何获得这个。
例如,如果标志为true,那么我想添加这个“where”类,否则我不想添加“where”子句。
models.Users.findAll({
where: {
email: req.query.email
}
}).then(function (list) {
res.send(list);
}).catch(function (error) {
res.status(500).json(error);
});
models.Users.findAll({
}).then(function (list) {
res.send(list);
}).catch(function (error) {
res.status(500).json(error);
});
答案 0 :(得分:1)
您可以首先在where子句中创建JSON,然后在where子句中传递它...类似
var jsonObj = null ;
if (req.query.email){
jsonObj = {"email": req.query.email};
} else {
jsonObj = {"email": {$ne:null}}; //otherwise it will return all rows, if email is not null in your database
}
models.Users.findAll({
where: jsonObj
}).then(function (list) {
res.send(list);
}).catch(function (error) {
res.status(500).json(error);
});
希望这会有所帮助
答案 1 :(得分:0)
您可以从空查询对象开始,并在适当时添加where
属性:
let query = {};
if (someCondition) {
query.where = { email: req.query.email };
}
models.Users.findAll(query).then(...);
答案 2 :(得分:0)
您可以在findAll
方法调用中使用简单的{{3}}。我们假设variable
是你的布尔标志
models.Users.findAll(variable ? { where: { email: req.query.email } } : {}).then(list => {
res.send(list);
}).catch(error => {
res.status(500).json(error);
});
或者您可以将options
对象分配给变量并使用相同的if
语句,但在findAll
调用之外
let options = variable ? { where: { email: req.query.email } } : {};
models.Users.findAll(options).then(list => {
// ...
});