1

MongoDB データベースからデータを読み取り/保存する REST API があります。私が使用するアプリケーションは、フォームを取得し、そこからオブジェクト (ジョブ) を作成してから、DB に保存します。フォームの後に、クリック イベントがコントローラーの保存機能をトリガーし、別の URL にリダイレクトするボタンがあります。

ボタンをクリックすると、ジョブは DB に追加されましたが、アプリケーションが動かなくなり、リダイレクトが呼び出されないと言われます。ただし、アプリケーションをリロードすると、新しい「ジョブ」が DB に追加されていることがわかります。これの何が問題なのですか?ありがとう !

これが私のコードです:

サンプルの html(jade) コード:

button.btn.btn-large.btn-primary(type='submit', ng:click="save()") Create

angular モジュールのコントローラ:

function myJobOfferListCtrl($scope, $location, myJobs) {

    $scope.save = function() {
        var newJob = new myJobs($scope.job);
        newJob.$save(function(err) {
            if(err)
                console.log('Impossible to create new job');
            else {
                console.log('Ready to redirect');
                $location.path('/offers');
            }
        });     
    };    
}

angular モジュールの構成:

var myApp = angular.module('appProfile', ['ngResource']);

myApp.factory('myJobs',['$resource', function($resource) {
    return $resource('/api/allMyPostedJobs',
            {},
            {
                save: {
                    method: 'POST'
                }   
            });
}]);

私のnodejsアプリケーションでのルーティング:

app.post('/job', pass.ensureAuthenticated, jobOffers_routes.create);

最後に、REST API のコントローラー:

exports.create = function(req, res) {
    var user = req.user;
    var job = new Job({ user: user, 
                        title: req.body.title,
                        description: req.body.description,
                        salary: req.body.salary,
                        dueDate: new Date(req.body.dueDate),
                        category: req.body.category});
    job.save(function(err) {
        if(err) {
            console.log(err);
            res.redirect('/home');
        } 
        else {
            console.log('New job for user: ' + user.username + " has been posted."); //<--- Message displayed in the log    
            //res.redirect('/offers'); //<---- triggered but never render
            res.send(JSON.stringify(job));
        }
    });
};
4

1 に答える 1