簡體   English   中英

Express JS路由無法與MEAN堆棧一起正常工作

[英]Express js routes not working as expected with MEAN stack

我剛開始表達/貓鼬,卻無法弄清楚我的路線為何不起作用。 我正在使用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); 

offer.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);
  }
  });
};

將我的評論變成答案:

您似乎在角度和快捷方式中都定義了相同的路線,因此當在角度內命中路線時,請求將不會發送到服務器。

您需要從客戶端代碼中顯式調用服務器路由。

干杯

更一般的路線應排在更具體的路線之后。 在這種情況下,只要您的路由器匹配/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);

它應該解決您的問題,因為它與更具體的路線相匹配,然后再轉到更通用的路線:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM