我正在使用Sails JS,PostgreSQL堆栈。
我想在网址末尾传递两个ID作为参数,如下所示:
/的getLocation /立方厘米/重
哪里' cc'是一个双字母的国家代码,例如US和' re'是对' cc'
中提及的国家/地区的自动填充查询虽然仅使用cc作品,但添加额外参数会导致“找不到”#39;页。
以下是' config / routes':
'get /location/getRegion/:cc/:re': 'LocationController.getRegion'
指着说:
'本地主机/位置/ getRegion / US /或'
导致404。
虽然:
'本地主机/位置/ getRegion / US'
工作但显然这会输出美国的所有地区/州。第二个参数应该使用' contains'
进一步过滤此结果关于如何使用这两个参数获得所需结果的任何想法?
这是
getRegion
我的
中的代码LocationController
module.exports={
getRegion:function(req, res, next){
Regions.find({where:{country_code:req.param('cc')},region:{'contains':req.param('id')}},function selectRegions(err, regions){
console.log(req.param('cc'))
if(err) return next(err);
if(!regions) return next();
console.log(regions)
res.json(regions)
})
}
}
答案 0 :(得分:0)
您的控制器代码很好地说明了我们不鼓励在Sails控制器操作中使用next
的原因:它可能使调试变得困难。在您的情况下,您的find
条件中包含以下内容:
region:{'contains':req.param('id')}
您的意思可能是req.param('re')
,因为您的路线未提供id
参数。因此查询将始终不返回任何结果,并且您最终调用next()
,它将控制权返回给Sails路由器,该路由器与任何其他路由和宾果游戏,404不匹配。如果您更改了此项:
if(!regions) return next();
到
if(!regions) return res.notFound();
它会产生同样的效果,但你可能很快就会发现正在发生的事情。