【发布时间】:2021-10-22 10:02:15
【问题描述】:
我在 localhost 中使用 nodejs 和 express 开发了一个基本的电子商务 Web 应用程序,管理员必须注册,然后他们才能从产品列表中添加、编辑和删除产品。
我有以下端点:
/signup
/signin
/admin/products <- products list endpoint
/admin/products/new
/admin/products/:id/edit <- product edition endpoint
当管理员注册时,他们会自动登录并重定向到产品列表端点。
router.post('/signup',
async (req, res) => {
const {email, password, passwordConfirmation} = req.body;
const user = await usersRepo.create({ email, password });
req.session.userId = user.id;
res.redirect('/admin/products');
})
当管理员编辑产品然后单击提交按钮时,他们也会被重定向到产品列表端点。
router.post('/admin/products/:id/edit',
async(req, res) => {
const changes = req.body;
await productsRepo.update(req.params.id, changes);
res.redirect('/admin/products');
}
);
这是 /admin/products 端点的 get 部分的代码
router.get('/admin/products',
async (req, res) => {
console.log('loading products page...');
const products = await productsRepo.getAll();
res.send(productIndexTemplate({products}))
});
我的问题是,当我注册新管理员或编辑产品时,应用程序几乎总是不会将我重定向到相应的端点 (/admin/products),而是浏览器向我显示“无法连接”页面。然而,在这两种情况下,操作都执行得很好,创建了新的管理员帐户,并且在产品的情况下更新了更改,事实上 如果我刷新页面它加载就好了。。 p>
检查标头我可以看到/admin/products 有请求的标头,但没有响应标头,也没有状态代码,而在引用页面(例如/admin/products/:id/edit)的情况下,既有请求又有响应标题。如果我错了,请纠正我,但似乎服务器正在响应加载 /admin/products 的请求,但由于某种原因它永远不会自动加载(我必须手动刷新它)。
另一方面,现在登录端点工作得很好,所以当应用程序需要写入我的硬盘驱动器(创建新的管理员用户或更新产品信息)时,问题似乎出现了
为了简单起见,我在代码中省略了验证器、中间件等。
【问题讨论】:
标签: javascript node.js express firefox