2017-02-27 69 views
0

有人可以告訴我,如果這貓鼬查詢可以簡化或寫入更透明。請提供示例:貓鼬 - 不同的語法

Game.where('game.players.id', user).where('game.rules.gameType', GameTypeEnum.x01) 
    .where('game.rules.quatro', rules.quatro).where('game.rules.score', rules.score) 
    .where('game.rules.parcheesi', rules.parcheesi).where('game.rules.runAndGun', rules.runAndGun) 
    .where('game.rules.playOff', rules.playOff).where('game.rules.doubleIn', rules.doubleIn) 
    .where('game.rules.doubleOut', rules.doubleOut).where('game.rules.masterOut', rules.masterOut) 
    .where('game.rules.equalOption', rules.equalOption).where('game.rules.endOption', rules.endOption) 
    .where('game.rules.teamRules', rules.teamRules).find({}, function(err, data) { 
    deferred.resolve(data); 
}); 

謝謝!

回答

0

您是否嘗試過使用find查詢?像這樣:

Game 
    .find({ 
    'game.players.id': user, 
    'game.rules.gameType': GameTypeEnum.x01, 
    'game.rules.quatro': rules.quatro, 
    'game.rules.score': rules.score, 
    'game.rules.parcheesi': rules.parcheesi, 
    'game.rules.runAndGun': rules.runAndGun, 
    'game.rules.playOff': rules.playOff, 
    'game.rules.doubleIn': rules.doubleIn, 
    'game.rules.doubleOut': rules.doubleOut, 
    'game.rules.masterOut': rules.masterOut, 
    'game.rules.equalOption': rules.equalOption, 
    'game.rules.endOption': rules.endOption, 
    'game.rules.teamRules': rules.teamRules 
    }) 
    .exec(function(error, data) { 
    deferred.resolve(data); 
    }); 
+0

@AVoid我沒有得到什麼是錯的,你可以嘗試換一種方式表述有何評論? –

+0

在這樣的查詢中,被定義的第一個規則,在這種情況下是'game.players.id',將是其中將搜索所有其他規則的主要規則。「search game.player.id其中game.player.game .rules.gameType」。 – Avoid

+0

「game.player.id which game.player.game.rules.gameType」暗示的是你試圖檢索滿足其他查詢的'game.player.id'的值。 –