rethinkdb 响应既是真又是假

rethinkdb response is both true and false

我正在尝试检查我的 rethinkdb 中是否存在某个值 table。

它的接缝就像给出了 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', {  }); 

    })

});

出于某种原因,如果我使用 table 中存在的 gamename,我会从 if 和 else 中获得两个 console.log 输出。

NAMETHATEXISTSINTABLE
Success  true
Does game exist? : false

如果我使用一个不存在的值,我会得到相同的两次:

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

为什么要这样缝运行两次?一个响应始终为 false,另一个使用我的游戏名称参数并正确响应 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 路由文件中,游戏名称被定义为:

/* 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);in app.js 是在根级别定义的 / 路由解析了 2 次。

将该行更改为:

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

已解决问题。但是,现在我不能为每个我想要的游戏使用 domaine.com/gamename - 我需要使用 domaine.com/game/:gamename.

如果有人对此有解决方案,我将很高兴听到!