【问题标题】:Sails JS Configured Route in Routes JS returns Not FoundSails JS 在 Routes JS 中配置的路由返回 Not Found
【发布时间】:2015-01-13 07:11:59
【问题描述】:

我正在使用 Sails JS、PostgreSQL 堆栈。

我想在 url 的末尾传递两个 id 作为参数,如下所示:

/getLocation/cc/re

其中“cc”是两个字母的国家/地区代码,例如 US,“re”是对“cc”中提到的国家/地区区域的自动完成查询

虽然只使用 cc 有效,但添加额外参数会导致“未找到”页面。

这里是“配置/路由”:

'get /location/getRegion/:cc/:re': 'LocationController.getRegion'

指点说:

'localhost/location/getRegion/us/or'

导致 404。

同时:

'localhost/location/getRegion/us'

有效,但显然这会输出美国的所有地区/州。第二个参数应该使用“包含”进一步过滤此结果

关于如何使用这两个参数达到预期结果的任何想法?

这里是

获取区域

我的代码

位置控制器

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)
        })
    }   
}

【问题讨论】:

  • 用一个简单的处理程序为我工作...你能发布getRegion 代码吗?
  • @sgress454 好的,谢谢。见编辑。

标签: node.js express routes sails.js sails-postgresql


【解决方案1】:

您的控制器代码很好地说明了为什么我们不鼓励在 Sails 控制器操作中使用 next:它会使调试变得困难。在您的情况下,您的 find 条件中有以下内容:

region:{'contains':req.param('id')}

您可能指的是req.param('re'),因为您的路线没有提供id 参数。因此查询将始终不返回任何结果,并且您最终调用next(),它将控制权返回给与任何其他路由和宾果游戏不匹配的 Sails 路由器,404。如果您更改此:

if(!regions) return next();

if(!regions) return res.notFound();

它会产生相同的效果,但您可能会更快地了解正在发生的事情。

【讨论】:

    猜你喜欢
    • 2016-06-03
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 2023-02-24
    • 1970-01-01
    • 2016-07-22
    • 2014-12-25
    相关资源
    最近更新 更多