2017-08-21 12 views
0

に最後にを変更しました res.redirect('...')データベース内の既存のオブジェクトではないURLパスを変更すると何も起こりません。そして私の質問は、角度を使用して404 errorを処理するこの正しい方法ですか、またはerroroミドルウェアを使用してサーバ側で404 errorを処理する必要がありますか?データベースにobject_idが見つからない場合にURLパスをリダイレクト

api.js

router.get('/seeMore/:id', function(req, res) { 
    var seeMore = req.params.id; 
    if(objectid.isValid(seeMore)){ 
     Product.findOne({_id:req.params.id}, function(err, product) { 
      if(err) throw err 
      if(!product) { 
       res.json({ success: false, message: 'Product no found' }); 
      } else { 
       res.json({ success: true, product: product }); 
      } 
     }) 
    } else { 
     res.json({ success:false }) 
    } 
}); 

routes.js

.when('/register', { 
    templateUrl: 'app/views/pages/users/register.html', 
    controller: 'regCtrl', 
    controllerAs: 'register', 
    authenticated: false 
}) 
.when('/home', { 
    templateUrl: 'app/views/pages/users/home.html', 
    controller: 'mainCtrl', 
    controllerAs: 'main', 
    authenticated: true, 
}) 
.when('/seeMore/:id', { 
    templateUrl: 'app/views/pages/users/nawigacja/zobaczwiecej.html', 
    controller: 'seeMoreCtrl', 
    controllerAs: 'seeMore', 
    authenticated: [true, false], 
}) 

controller.js

.controller('seeMoreCtrl', function($scope,$routeParams,User, $window){ 

var app = this; 
if(data.data.success){ 
    User.readMoreCourse($routeParams.id).then(function(data){ 
     app.currentProduct = data.data.product._id; 
     console.log(data.data.product) 
    }); 
} else { 
    $window.location.assign('/register') 
} 

を})。 controller.jsで

サービス

.factory('User', function($http){ 
userFactory = {} 

userFactory.readMoreCourse = function(id) { 
    return $http.get('/api/zobaczwiecej/' + id) 
} 
return userFactory 

})

+0

あなたが見たいフロントエンドコードを追加してください。もっと –

+0

@ManishKumawat私は質問を編集しました –

答えて

0

を、なぜあなただ​​け

controller.js

.controller('seeMoreCtrl', function($scope,$routeParams,User, $window){ 

    var app = this; 
    if(data.data.success){ 
     User.readMoreCourse($routeParams.id).then(function(data){ 
      app.currentProduct = data.data.product._id; 
      console.log(data.data.product) 
     }); 
    } else { 
      $location.path("/register"); //------------> change here 
    } 
( '/登録')$ location.pathを使用カント
+0

$ location.path()を次に使用すると、以前のビューにアクセスできなくなるためです。私はあなたのポイントを取得していない/私はブラウザのボタンで/ homeのクリックに戻ることができない/登録へのリダイレクト –

+0

。あなたはあなたのコメントを言い換えていただけますか? –

関連する問題