【发布时间】:2013-03-10 11:56:47
【问题描述】:
我有一个页面,其路由 GET /team 正在加载团队列表,DEL /team 正在从 /team/:key 中删除团队。因此,您导航到团队的个人资料页面并从那里删除它们,删除时它应该将您重定向到 /team 页面。我已将日志放入控制台,它成功删除了team,奇怪的是,它说它正在加载/team,但浏览器没有加载它。我已经把我的代码放在下面了,有什么想法吗?
路线:
app.get('/team'/*, lim("Must be logged in to see teams")*/, getAllTeams, function(req, res){
util.log('Serving request for url [GET] ' + req.route.path);
// Pass it the list of all Teams
res.render('team', {'teamsList' : req.teamsList} );
});
app.get('/team/:key', function(req, res) {
util.log('Serving request for url [GET] ' + req.route.path);
Team.findByKey(req.params.key, function(err, teamData){
if(!err && teamData){
teamData = teamData;
res.render('teamDetails', { 'teamData' : teamData } );
} else {
util.log('Error in fetching Team by key : ' + req.params.key);
res.json({
'retStatus' : 'failure',
'msg' : 'Error in fetching Team by key ' + req.params.key
});
}
});
});
/**
* DEL /team/:key
* Delete Team by key
*/
app.del('/team/:key', getAllTeams, function(req, res) {
util.log('Serving request for url [DEL] ' + req.route.path);
Team.remove({key : req.params.key}, function(err){
var message = '';
var retStatus = '';
if (!err) {
util.log('Successfully deleting Team with key: ' + req.params.key);
message = 'Successfully deleting Team with key: ' + req.params.key;
retStatus = 'Success';
res.redirect('/team');
} else {
util.log('Error deleting Team with key: ' + req.params.key + 'Error: ' + util.inspect(err));
res.json({
'retStatus' : 'failure',
'msg' : 'Error in fetching Team with key ' + req.params.key
});
}
});
});
JavaScript + HTML 模板:
button#teamDelete.btn.btn-danger.btn-mini(type="submit", value="Delete Team") Delete
script(type='text/javascript')
$('#teamDelete').live('click',function(){
var teamId = #{teamData.key};
$.post('/team/' + teamId, { _method : 'delete' }, function(response) {
console.log(response);
if(response.retStatus === 'Success') {
if('/team' && '/team' !== "") {
window.location = '/team';
}
}
});
});
控制台日志:
10 Mar 11:52:01 - Serving request for url [GET] /team
10 Mar 11:52:02 - Serving request for url [GET] /team/:key
10 Mar 11:52:03 - Serving request for url [DEL] /team/:key
10 Mar 11:52:03 - Successfully deleting Team with key: 1362855941128
10 Mar 11:52:03 - Serving request for url [GET] /team
getAllTeams:
var getAllTeams = function(req, res, next){
Team.getAll(function(err, teamsList){
if(!err && teamsList){
req.teamsList = teamsList;
return next();
}
});
};
Team.getAll(团队架构)
Team.statics.getAll = function(cb){
var query = this.find({});
query.sort({key : -1});
return query.exec(cb);
};
【问题讨论】:
-
/team GET 路由需要一个参数 req.teamsList 来呈现页面。它是否在重定向中可用?
-
@almypal 如果我像渲染
/team页面时那样在重定向中添加{'teamsList' : req.teamsList},并添加getAllTeams,控制台中不会显示任何内容,也不会加载任何内容. -
如何将其添加到重定向中?
-
@almypal 我尝试添加
res.render('team', {'teamsList' : req.teamsList} );,但没有加载任何内容,我认为它不适用于res.render,但它也不适用于简单的重定向,因为它需要一个teamList正如你所说,知道如何解决这个问题吗? -
/team GET 路由是否独立工作...如果是,参数如何随请求一起发送...
标签: javascript node.js mongoose express