Postgresql 删除导致重定向循环?
我有一个带有postgres后端的express应用程序,用户可以在其中添加/删除菜谱,每次添加/删除菜谱时,他们都会得到一份最新的菜谱列表。添加一个菜谱是可以的,但当我删除一个菜谱时,它似乎陷入了重定向循环。在app.jsPostgresql 删除导致重定向循环?,postgresql,express,Postgresql,Express,我有一个带有postgres后端的express应用程序,用户可以在其中添加/删除菜谱,每次添加/删除菜谱时,他们都会得到一份最新的菜谱列表。添加一个菜谱是可以的,但当我删除一个菜谱时,它似乎陷入了重定向循环。在app.js router.get('/delete/:d', delRec.deleteRecipe); 它调用以下代码 exports.deleteRecipe = function(req, res){ pg.connect(conString, function(err,
router.get('/delete/:d', delRec.deleteRecipe);
它调用以下代码
exports.deleteRecipe = function(req, res){
pg.connect(conString, function(err, client) {
client.query('DELETE FROM recipes WHERE recipe_name = ', [req.params.d], function(err, result) {
if(err) {
return console.error('error running query', err);
} else if (result) {
pg.end();
console.log('deleting');
}
});
});
res.redirect('recipes');
};
如果我尝试删除一个配方,console.log('deleting')
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
deleting
下面是配方路线
(很抱歉,它太复杂了)
导致您的问题的行是res.redirect('recipes')代码>
首先,正如@Jordonias指出的,您应该将这一行放在db查询的回调中
第二,我认为该行将您从YOUR_DOMAIN.COM/delete/:d
重定向到YOUR_DOMAIN.COM/delete/recipes
,而不是YOUR_DOMAIN.COM/recipes
,这会生成一个无限重定向循环。绝对路径与相对路径是一个非常常见的陷阱
因此,您应该将代码更改为res.redirect('/recipes')代码>给我们看看你的食谱现在就开始吧,为意大利面条道歉我不确定这是否与问题有关。但是对于您的错误,您应该发送响应并记录您的错误。目前,您仅将错误记录到控制台。这可能是问题的根源,因为请求可能没有得到响应。
router.get('/recipes', function(req, res) {
pg.connect(conString, function(err, client) {
if(err) {
return console.error('could not connect to postgres', err);
}
client.query('SELECT * FROM recipes', function(err, result) {
if(err) {
return console.error('error running query', err);
}
recipes = result.rows;
for(var d in recipes) {
if (recipes.hasOwnProperty(d)) {
recipeList[d] = recipes[d].recipe_name;
}
}
res.render('recipes', {recipes: recipes, recipeList: recipeList});
});
});
});