2

我有一个要在 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
    });         
}
4

2 回答 2

7

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
});
于 2012-10-24T03:53:24.903 回答
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
 });
于 2012-10-24T03:52:23.013 回答