Express js 路由无法与 MEAN 堆栈按预期工作

Posted

技术标签:

【中文标题】Express js 路由无法与 MEAN 堆栈按预期工作【英文标题】:Express js routes not working as expected with MEAN stack 【发布时间】:2013-11-03 13:07:36 【问题描述】:

我对 express/mongoose 还很陌生,无法弄清楚为什么我的路线不起作用。我正在使用 MEAN 堆栈。

我有一条一般报价路线“/offers”,然后是特定报价路线“/offers/television”和“/offers/laptops”,但是当尝试路由到特定路线时,它通过“/offers”而不是我写的路线。

我错过了什么?

谢谢!

我的代码:

index.html

<a href="#!/offers/televisions">Television Offers</a>

config.js

    when('/offers',
        templateUrl: 'views/offers/list.html'
    ).
    when('/offers/televisions',
        templateUrl: 'views/offers/list.html'
    ).
    when('/offers/laptops',
        templateUrl: 'views/offers/list.html'
    )

routes.js

 //Offer Routes
 var offers = require('../app/controllers/offers');
 app.get('/offers', offers.all); 
 app.get('/offers/televisions', offers.televisions); 
 app.get('/offers/laptops', offers.laptops); 

offers.js

/**
 * Find all offers
 */

exports.all = function(req, res)
console.log('all');
Offer.find(, function(err, offers)
  if (err) 
    res.render('error', 
      status: 500
    );
   else 
    res.jsonp(offers);
  
);
;

/**
* Find all television offers
*/

exports.televisions = function(req, res)
  console.log('televisions');
  Offer.find(type: 'television', function(err, offers)
    if (err)
      res.render('error', 
      status:500
    );
  else
    console.log(offers);
    res.jsonp(offers);
  
  );
;

【问题讨论】:

好吧,也许我不完全理解你的设置,但你似乎在角度和快递中定义了相同的路线,所以当一个路线在角度内被击中时,请求不会发送到服务器。您需要显式调用服务器路由,并且您没有在示例中显示此内容。 这是正确的。请求没有发送到快递。谢谢。 【参考方案1】:

把我的评论变成答案:

您似乎在 angular 和 express 中定义了相同的路由,因此当路由在 angular 内被命中时,请求将不会发送到服务器。

您需要从您的客户端代码中显式调用服务器路由。

干杯

【讨论】:

【参考方案2】:

更一般的路线应该排在更具体的路线之后。在这种情况下,只要您的路由器与/offers 匹配,它将返回该结果,而无需使用下面更具体的选项。如果您这样重新排列路由器:

 // Offer Routes
 var offers = require('../app/controllers/offers');
 app.get('/offers/televisions', offers.televisions); 
 app.get('/offers/laptops', offers.laptops); 
 app.get('/offers', offers.all);

它应该可以解决您的问题,因为它在到达更一般的路线之前匹配更具体的路线:)

【讨论】:

以上是关于Express js 路由无法与 MEAN 堆栈按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

RESTful Crud MEAN.js 路由

无法使用带有 MEAN 堆栈的 express-jwt 在服务器端验证令牌

使用 MEAN 堆栈保护路由和模板?

MEAN堆栈上的登录系统架构?

为啥 MEAN 堆栈建议后端 Express 代码使用 MVC 目录结构?

Angular 和 Express 路由如何在 mean.js 应用程序中协同工作?