2017-10-08 13 views
0

私のrethinkdbテーブルに値が存在するかどうかをチェックしようとしています。rethinkdbレスポンスが真と偽の両方です

2つの応答を与えるような継ぎ目があります。私は、テーブルに、私は両方にconsole.logの出力を得る存在する場合は、他の両方からgamenameを使用している場合、何らかの理由で

router.param('gamename', function(req, res, next, gamename) { 
    // do validation on gamename here 

    console.log(gamename); 
    r.table("Game").filter({ 
     name: gamename, 
    }).count().eq(1) 
    .run() 
     .then(function(response){ 
     if (response) { 

      console.log('Success ',response); 
      req.gamename = gamename; 
      next(); 

     }else{ 
     console.log("Does game exist? : "+response); 
     res.render('error', { gamename: gamename, message: "Game does not exist" }); 

    } 
    }) 
    .error(function(err){ 
     console.log('error occurred ',err); 
     //res.render('error', { }); 

    }) 

}); 

私は、このようにそれを行います。私は存在しない値を使用する場合は

NAMETHATEXISTSINTABLE 
Success true 
Does game exist? : false 

私は二度同じ取得:これが二回実行されるように

NAMETHATDOESNOTEXIST 
Does game exist? : false 
Does game exist? : false 

は、なぜそれが縫い目のでしょうか? 1つは応答が常にfalseで、もう1つはgamenameパラメータを使用して、trueまたはfalseに正しく応答する場所です。

ご協力いただければ幸いです。

答えて

2

私はそれを理解しました。

var admin = require('./routes/admin'); 
var main = require('./routes/main'); 

app.use('/admin', admin); // Add admin routes to middleware chain. 
app.use('/', main); // Add game routes to middleware chain. 

と私は問題を抱えていたmain.jsルート・ファイルで、gamenameが定義されました:

/* GET game home page. */ 
router.get('/:gamename', game_controller.index); 
/* GET assets routes page. */ 
router.get('/:gamename/assets', assets_controller.index); 
router.get('/:gamename/assets/:id', assets_controller.id); 

をので、以来、私はこのように私のルートを定義し、私のapp.jsファイルで

app.use('/', main);app.jsはルートレベル/で定義され、ルートは2回解決されました。

にその行を変更する:

app.use('/game', main); // Add game routes to middleware chain. 

は、問題を修正しました。 Hovever、私はそれぞれのゲームにdomaine.com/gamenameを使用できません - domaine.com/game/:gamenameを使う必要があります。

誰かがこれに対する解決策を持っているなら、私はそれについて聞いて嬉しいです!