expressjs和angularjs路由问题

时间:2014-11-14 04:46:18

标签: angularjs node.js mongodb express

我已经开始建立自己的,我有一个问题,我花了一整天时间试图修复。

基本上,我使用angular $ resource与我的API进行通信。

我的所有路线(玉石模板)都正常工作并正确渲染,但问题就出现了。

我目前正在构建我的博客系统,到目前为止我已经创建了一个简单的CRUD。 我通过表单向我的博客添加帖子,我可以通过它的ID(使用mongodb和mongoose)访问每个帖子,所以我只需点击标题并打开单独的页面即可发布我的帖子。

我遇到的唯一问题是当我刷新页面/:id one时。

然后我的默认样式丢失了,我只得到一个对象作为回报。 (我的mongoDB对象)。

以下是一些代码:

ExpressJS get方法:

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

Angular JS路线

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

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

HINT 当我把这条路线放在下面抓住所有路线(*)然后我可以刷新页面,但问题是我不能再获得json元素,但是没有我的对象等的html页面。

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

像往常一样,非常感谢,我希望你的精彩可以帮助我解决这个奇怪的问题:)。 干杯

1 个答案:

答案 0 :(得分:0)

正如用户:irth所述,我唯一需要做的就是改变资源路径并将JS路由表达为其他东西。这现在有效,但无论如何,我现在都不知道。它接缝这是当你喜欢的时候“我的代码不起作用,我不知道为什么,我的代码有效,我不知道为什么”。

非常感谢用户。不确定为什么你的答案没有显示所以我可以给你积分等。