【发布时间】:2013-10-17 15:39:45
【问题描述】:
我有一个 REST API,可以从 MongoDB 数据库读取/保存数据。 我使用的应用程序检索表单并从中创建对象(作业),然后将其保存到数据库中。在表单之后,我有一个按钮,点击事件触发我的控制器的保存功能,然后重定向到另一个 url。
单击按钮后,据说该作业已很好地添加到数据库中,但应用程序被卡住了,并且从未调用过重定向。但是,如果我重新加载我的应用程序,我可以看到新的“工作”已经很好地添加到了数据库中。这有什么问题???谢谢!
这是我的代码:
示例 html(jade) 代码:
button.btn.btn-large.btn-primary(type='submit', ng:click="save()") Create
角度模块的控制器:
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');
}
});
};
}
角度模块的配置:
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));
}
});
};
【问题讨论】:
-
是否曾经调用过“作业”(与 api/allMyPostedJobs)端点的 POST?如果不是,那么我不确定您的代码如何将任何内容保存到数据库中。
-
是的,我在日志中有这个:用户 XXX 的新工作已发布。此外,当我重新启动服务器应用程序时,帖子在数据库中......
-
为了清楚起见,日志不显示消息“准备重定向”,这可能发生在 $location.path() 重定向之前。
标签: javascript node.js angularjs redirect mongoose