2017-10-08 70 views
0

我試圖檢查一個值是否存在於我的rethinkdb表中。rethinkdb響應是真的和假的

它接縫就像給出2個響應一樣。

我做這種方式:

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', { }); 

    }) 

}); 

出於某種原因,如果我用一個gamename存在於表中,我同時獲得的console.log輸出,無論從if和else。

NAMETHATEXISTSINTABLE 
Success true 
Does game exist? : false 

如果我使用了一個不存在的值,我會得到相同的兩次:

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

爲什麼見不着像這樣運行兩次?一個是響應總是錯誤的,另一個是使用我的遊戲名稱參數並正確響應true或false的地方。

任何幫助將不勝感激!

回答

2

我想通了。

在我app.js文件中,我定義我的路線是這樣的:

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. 

和routes文件在那裏我有問題的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.use('/', main);,app.js被定義在根級/的路由中解決了2次。

更改該行:

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

解決了這一問題。 Hovever,現在我無法爲每個我想要的遊戲使用domaine.com/gamename - 我需要使用domaine.com/game/:gamename。

如果有人有解決方案,我會很樂意聽到!