【问题标题】:Conditional Mongoose Query条件 Mongoose 查询
【发布时间】:2012-10-24 11:53:24
【问题描述】:

我有一个查询,我想在 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
    });         
}

【问题讨论】:

  • 为什么这不是最优的?单个(更复杂的)查询如何更好?

标签: mongodb mongoose


【解决方案1】:

如果您所说的“不是最佳”是指需要在没有函数的情况下复制“东西”代码,您可以按以下步骤构建您的 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
});

【讨论】:

    【解决方案2】:

    为什么这不是最优的?单个(更复杂的)查询如何更好?

    重复的“东西”不太好,但您可以轻松解决:

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

    【讨论】:

    • 谢谢!超级有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 2021-09-19
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    相关资源
    最近更新 更多