2016-09-09 3 views
0

blog/xyz이 작동하지 않으면 show 404 페이지를 원합니다. 그래서 난 내 routes.js에 dataNotFound를 추가했습니다,하지만 난 어떤 결과를했습니다 없습니다 : 내가 blog/ojhojeofje 잘못된 URL을 테스트하는 경우, 난 그냥 데이터없이 게시, 404 페이지가없는IronRouter dataNotFound 블로그 게시물에

Router.route('/blog/:slug', { 
    name: 'blogPost', 
    parent: 'blog', 
    itemName: function() { 
    return this.data().post.title; 
    }, 
    data: function() { 

    let post = Posts.findOne({ 
     'slug': this.params.slug 
    }); 

    return { 
     post, 
     profil 
    }; 

    } 
}); 

Router.onBeforeAction('dataNotFound', { 
    only: 'blogPost' 
}); 

.

의견이 있으십니까?

감사합니다. 모든

답변

1

첫째, 당신은 플러그인으로 대신 onBeforeActiondataNotFound를 등록해야합니다

Router.plugin('dataNotFound', { only: ['blogPost'] }); 

둘째 dataNotFound 플러그인 경로 data()가 falsy 값을 반환하는 경우 확인하여 작동합니다. data() 함수에 여러 데이터 객체를로드하려는 경우 게시물을 찾을 수없는 경우 위변조를 반환하도록 함수를 변경해야합니다. 예를 들어, 당신은 단순히이 작업을 수행 할 수 있습니다 당신은 또한 당신이 불필요하게 찾을 수없는 페이지로 이동 방지하기 위해 data를 실행하기 전에 Posts 컬렉션에 가입을 사용할 수 있는지 확인해야

data: function() { 
    let post = Posts.findOne({ 
    'slug': this.params.slug 
    }); 
    if (!post) { 
    return false; 
    } 
    ... 

참고.

+0

감사합니다. 완벽하게 작동! –