koa+mongo接收post请求后报错:Error: connect ECONNREFUSED 127.0.0.1:80

发布于 2022-09-11 16:17:52 字数 1124 浏览 12 评论 0

问题描述

当前端发送post请求后数据库成功写入数据,但是后端还是报错Error: connect ECONNREFUSED 127.0.0.1:80,并返回500。

问题出现的环境背景及自己尝试过哪些方法

后端是用koa搭建的,mongoose操作数据库。我查过好像是默认返回的端口是80但是80是不能访问的,所以在koa的app.js中加入了代理

var proxy = require('koa-better-http-proxy')

app.use(
  proxy('/register', { target: 'http://127.0.0.1:3000', changeOrigin: true })
)

相关代码

//User.js
router.post('/register', async ctx => {
  const { username, password, email } = ctx.request.body
  let user = User.find({
    username
  })
  if (user.length) {
    ctx.body = {
      code: -1,
      msg: '已被注册'
    }
  }

  let newUser = await User.create({
    username,
    password,
    email
  })
  if (newUser) {
    let res = await axios.post('/login', {
      username,
      password
    })

    if (res.data && res.data.code === 0) {
      ctx.body = {
        code: 0,
        msg: '注册成功',
        user: res.data.user
      }
    } else {
      ctx.body = {
        code: -1,
        msg: 'error'
      }
    }
  } else {
    ctx.body = {
      code: -1,
      mgs: '注册失败'
    }
  }
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小巷里的女流氓 2022-09-18 16:17:52

我发现是跳转登陆后权限认证有问题,在koa-passport那块

router.post('/login', async (ctx, next) => {
  // ctx.body = {
  //   code: 0,
  //   msg: {
  //     ...ctx.request.body
  //   }
  // }
  return passport.authenticate('local', function(err, user, info, status) {
    if (err) {
      ctx.body = {
        code: -1,
        msg: err
      }
    } else {
      //拿到登陆用户
      if (user) {
        ctx.body = {
          code: 0,
          msg: '登陆成功',
          user
        }
        return ctx.login(user)
      } else {
        ctx.body = {
          code: 1,
          msg: info
        }
      }
    }
  })(ctx, next)

ctx.login 会报错,ctx中找不到login这个方法

已经解决,中间件调用顺序错了

app.use(passport.initialize())
app.use(passport.session())

应该放在 router 前面

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文