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.
如果有人对此有解决方案,我将很高兴听到!
我正在尝试检查我的 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.
如果有人对此有解决方案,我将很高兴听到!