我有一个查询,我希望在where情况下运行,只有当变量为false时。这就是我现在正在做的事情,但它不是最佳的。有没有办法用一个查询来做到这一点?
if (user) {
models.Interviews.find({}).exec(function (err, interviews) {
// stuff
});
} else {
models.Interviews.find({}).where('group').equals(group_id).where('disabled').equals(false).exec(function (err, interviews) {
// stuff
});
}
答案 0 :(得分:7)
如果“非最佳”你指的是需要在没有函数的情况下复制'stuff'代码,你可以按照以下步骤构建你的Query
对象:
var query = models.Interviews.find({});
if (!user) {
query = query.where('group').equals(group_id).where('disabled').equals(false);
}
query.exec(function (err, interviews) {
// stuff
});
答案 1 :(得分:1)
为什么这不是最佳的?单个(更复杂)的查询如何更好?
重复的“东西”不是很好,但你可以很容易地解决这个问题:
var stuff = function(err, interviews) {
// stuff
};
if (user) {
models.Interviews.find({}).exec(stuff);
} else {
models.Interviews.find({})
.where('group').equals(group_id).where('disabled').equals(false)
.exec(stuff);
}
或
var query = models.Interviews.find({});
if (!user){
query = query.where('group').equals(group_id)
.where('disabled').equals(false);
}
query.exec(function(err, interviews) {
// stuff
});