2014-11-14 4 views
1

Я начал строить свои собственные, и у меня есть проблема, которую я довольно много потратил целый день, пытаясь исправить.expressjs and angleularjs routing issue

В принципе, я использую угловой ресурс $ для связи с моим API.

Все мои маршруты (нефритовые шаблоны) работают правильно, но здесь возникает проблема.

Я в настоящее время строю свою систему блога, где я до сих пор создал простой CRUD. Я добавляю сообщения в свой блог через форму, и я могу получить доступ к каждому сообщению по его идентификатору (используя 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'); 
}); 

Так в основном для меня е все работает нормально, пока я не обновляю страницу с параметрами /: 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) 

Как обычно, спасибо заблаговременно и надеюсь, что ваша удивительность поможет мне исправить эту странную проблему :). Cheers

+0

Позвольте мне понять это прямо. У вас есть правильный макет с url 'localhost: 3000/bblog/posts/54641972b7557ecb6e637aa6' в какой-то момент? Это показалось мне странным. –

+0

Я получаю доступ к своим сообщениям, предоставляя идентификатор моих сообщений mongodb. Каждый пост имеет свой уникальный идентификатор. Эта работа просто прекрасна, только проблема в том, когда zi обновляет любую запись, тогда мой шаблон post.jade просто не отображается. –

+0

Итак, вы можете перейти на страницу сообщения в блоге через приложение «Угловое», но когда вы перезагружаете браузер, сервер отправляет вам конечную точку данных вместо этого?Используете ли вы режим html5 true, любой параметр hashPrefix в app.config() или базовый url в индексе? Кажется, что ваш сервер перехватывает маршрут к вашей угловой странице, которая соответствует странице базы данных. Возможно, вы хотите, чтобы ваша конечная точка db имела аналогичный, но другой адрес, чем маршрутизация в Angular. – irth

ответ

0

Точно так же, как пользователь: irth заявил, только мне нужно было изменить путь ресурса и expressJS-маршрут к чему-то еще. Сейчас это работает, но я не знаю теперь. Это швы, это один из тех дней, когда вы похожи: «О, мой код не работает, я не знаю, почему, мой код работает, я не знаю почему».

Большое спасибо пользователю irth. Не уверен, почему ваш ответ не показан, поэтому я могу дать вам кредиты и т. Д.