2012-10-24 52 views
2

我有一個查詢,我想運行的情況下,只有當一個變量是假的。這就是我現在正在做的,但它不是最佳的。有一種方法可以用一個查詢來做到這一點嗎?有條件的貓鼬查詢

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

爲什麼這是不是最佳?單個(更復雜)的查詢如何更好? – Thilo

回答

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 
}); 
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 
}); 
+0

感謝!超級有用。 –