Javascript 在where arg中使用多个约束对查询findAll进行续集
新的续集在这里 正在寻找使用res.query中的2个参数的方法 没有任何请求。查询工作正常 硬编码所有工作正常 只有手机也可以正常工作 有没有办法同时使用这两种方法(在它们之间进行AND或or) 或者。。。。有没有办法检查res.query中的所有变量并根据需要应用它们 问候Javascript 在where arg中使用多个约束对查询findAll进行续集,javascript,express,sequelize.js,Javascript,Express,Sequelize.js,新的续集在这里 正在寻找使用res.query中的2个参数的方法 没有任何请求。查询工作正常 硬编码所有工作正常 只有手机也可以正常工作 有没有办法同时使用这两种方法(在它们之间进行AND或or) 或者。。。。有没有办法检查res.query中的所有变量并根据需要应用它们 问候 exports.findAll = (req, res, next) => { const { phone, active } = req.query; // phone(string), active(bo
exports.findAll = (req, res, next) => {
const { phone, active } = req.query; // phone(string), active(boolean)
let condPhone = phone ? { userPhone: { [Op.like]: `%${phone}%` } } : null;
let condActive = active ? { userActive: Boolean(active) } : null;
Saloia.Users.findAll({ where: condActive })
.then((data) => res.send(data))
.catch((err) => {
err.status = 500;
next(err);
});
};
您可以将多个条件作为
where
值的对象
Saloia.Users.findAll({
where: {
foo: bar,
foo2: bar2
}
});
我想我解决了这个问题
exports.findAll = (req, res, next) => {
const { phone, active, last } = req.query;
let options = { where: {} };
// string
phone ? (options.where.userPhone = { [Op.like]: `%${phone}%` }) : null;
// boolean
active ? (options.where.userActive = tmp = active === "true") : null;
// date/time
last ? (options.where.userLstMsg = {[Op.gt]: moment().subtract(last, 'hours').toDate()}) : null;
Saloia.Users.findAll(options)
.then((data) => res.send(data))
.catch((err) => {
err.status = 500;
next(err);
});
};
在这种情况下,我可以用这些
//任何数字或部分
//最近24小时内登录的活动用户
这里是json文件供参考
{
"userLstMsg": "2020-04-08T05:48:49.910Z",
"userId": "U.k8qwwlmh",
"userPhone": "351123456789",
"userName": "my user",
"userActive": true
}
是的,文字效果很好!在where body中调用函数怎么样?