Node.js 我的回答既正确又错误

Node.js 我的回答既正确又错误,node.js,express,rethinkdb,rethinkdb-javascript,Node.js,Express,Rethinkdb,Rethinkdb Javascript,我试图检查我的数据库表中是否存在值 它喜欢给出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()

我试图检查我的数据库表中是否存在值

它喜欢给出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
,我将从if和else中获得console.log输出

NAMETHATEXISTSINTABLE
Success  true
Does game exist? : false
如果我使用了一个不存在的值,我会得到两次相同的值:

NAMETHATDOESNOTEXIST
Does game exist? : false
Does game exist? : false
为什么像这样缝两次?一个是响应始终为false,另一个是使用my gamename参数并正确响应true或false

任何帮助都将不胜感激

我明白了

在我的
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.
在我遇到问题的main.js routes文件中,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
中的code>是在根级别
/
定义的路由,其中解析了2次

将该行更改为:

app.use('/game', main);  // Add game routes to middleware chain.
解决了这个问题。Hovever,现在我不能为我想要的每一个游戏使用domaine.com/gamename,我需要使用domaine.com/game/:gamename

如果有人能解决这个问题,我会很高兴听到

我明白了

在我的
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.
在我遇到问题的main.js routes文件中,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
中的code>是在根级别
/
定义的路由,其中解析了2次

将该行更改为:

app.use('/game', main);  // Add game routes to middleware chain.
解决了这个问题。Hovever,现在我不能为我想要的每一个游戏使用domaine.com/gamename,我需要使用domaine.com/game/:gamename

如果有人能解决这个问题,我会很高兴听到