2014-11-14 173 views
1

我已經開始構建自己的,我有一個問題,我幾乎花了整整一天的時間來嘗試修復。expressjs和angularjs路由問題

基本上,我使用角度$資源與我的API進行通信。

我所有的路線(玉模板)正在工作和渲染正常,但問題來了。

我目前正在構建我的博客系統,至此我創建了一個簡單的CRUD。 我通過表單向我的博客添加帖子,我可以通過它的ID(使用mongodb和mongoose)訪問每篇文章,因此我只需點擊標題並單擊頁面打開我的文章。

我遇到的唯一問題是當我刷新頁面/:id一個。

然後我的默認樣式丟失,我只得到一個對象的回報。 (我的mongoDB對象)。

下面是一些代碼:

ExpressJS獲得方法:

module.exports.getSinglePost = function(req,res) { 
    Posts.findById(req.params.id, function(err, data) { 
     if (err) { 
      res.send(err); } 
     else { 
      res.json(data) 
     } 
}) 

角JS路線

.when('/bblog/posts/:id', { 
    templateUrl: 'views/post', 
    controller: 'singlePostController' 
}) 

快遞JS路線

router.route('/bblog/posts/:id') // get single id 
     .get(CRUD.getSinglePost) 
     .put(CRUD.updatePost) 
     .delete(CRUD.DeletePost) 

router.route('/views/*') 
    .get(function(req, res) { 
    res.render(req.params['0']); 
}); 

router.route('*') 
    .get(function(req, res) { 
     res.render('index'); 
}); 

所以基本上我Ë現在正常工作,直到我用params /:id(params)刷新頁面,然後它只是在空白頁面上打印出整個對象(當我例如刷新localhost:3000/bblog/posts/54641972b7557ecb6e637aa6,這是我的帖子之一)

例如:

{ 
    "_id":"54641972b7557ecb6e637aa6", 
    "content":"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishin\", 
    \n\"title\": \"orem Ipsum is simpl","title":"orem Ipsum is simpl", 
    "__v":0 
} 

提示 當我把下面抓這條線路的所有線路(*),那麼我可以刷新頁面,但問題是,我沒有得到回報JSON元素的任何時間較長,但html頁面沒有我的對象等

router.route('/bblog/posts/:id') // get single id 
    .get(CRUD.getSinglePost) 
    .put(CRUD.updatePost) 
    .delete(CRUD.DeletePost) 

像往常一樣,預先感謝,我希望你的迷人能幫助我解決這個奇怪的問題:)。 乾杯

+0

讓我直接得到這個。你有一個正確的佈局與URL'本地主機:3000/bblog /帖子/ 54641972b7557ecb6e637aa6'在某些時候?這對我來說似乎很奇怪。 –

+0

我通過提供我的mongodb帖子的ID來訪問我的帖子。每篇文章都有其獨特的id.This工作很好,唯一的問題是當zi刷新任何帖子,然後我的post.jade模板只是不渲染。 –

+0

因此,您可以通過Angular應用導航到博客文章頁面,但是當您重新加載瀏覽器時,服務器會將數據端點發送給您?您是否使用html5模式true,app.config()中的任何hashPrefix設置或索引中的基礎url?看起來你的服務器正在劫持到你的角色頁面的路徑與數據庫頁面相匹配。也許你希望你的db端點有一個類似但不同於Angular路由的地址。 – irth

回答

0

就像用戶:irth所說的,我唯一需要做的就是改變資源路徑並且將路徑指向其他東西。這現在可行但無論如何,我現在不知道。它接縫這是當你像「哦,我的代碼不工作,我不知道爲什麼,我的代碼工作,我不知道爲什麼」的那些日子之一。

非常感謝用戶irth。不知道爲什麼你的答案沒有顯示,所以我可以給你信用等。