2

変数がfalseの場合にのみ、whereケースで実行したいクエリがあります。これは私が今していることですが、それは最適ではありません。1つのクエリでこれを行う方法はありますか?

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 に答える