2014-11-14 133 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。不知道为什么你的答案没有显示,所以我可以给你信用等。