【问题标题】:NodeJS+Express: redirect doesn't load the endpointNodeJS + Express:重定向不加载端点
【发布时间】: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


    【解决方案1】:

    您需要将它们设置为 get 的管理产品端点。我只看到帖子

    router.get('/', function(req, res, next) {
      // If user is already logged in, then redirect to rooms page
      if(req.isAuthenticated()){
        res.redirect('/rooms');
      }
      else{
        res.render('login', {
          success: req.flash('success')[0],
          errors: req.flash('error'), 
          showRegisterForm: req.flash('showRegisterForm')[0]
        });
      }
    });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-22
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多