koa2+mongoose疑惑, 数据已经写入数据库了, 接口通的, 前端返回404!!! 急

发布于 2022-09-11 20:07:43 字数 692 浏览 12 评论 0

问题描述

接口正常, 只要操作数据库就前端就会报404错误

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

试过把操作数据库的代码注释, 接口能正常访问, 打开注释前端就会报404

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

router.get('/login', async ctx => {


    // let user = new UserModel({
    //     username: 'username',
    //     password: 'password123'
    // })
    // let info = await user.save()

    let info = await UserModel.find({}) // 注释掉操作数据库就是通的

    console.log(info, '---info'); // 这里是通的, 有数据显示

    ctx.body = { // 这里就返回不了前端了, 前端报404
        success: 200,
        data: info
    }

})

你期待的结果是什么?实际看到的错误信息又是什么?

最后想说的是, 我想用koa2+mongodb做一个登录注册的api服务, 之后用vue-cli写登录注册页面, 练练手

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

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

发布评论

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

评论(2

诺曦 2022-09-18 20:07:43
  'GET /getData': async (ctx, next) => {
    let res = ctx.response;
    let data = await getData();
    res.body = {
      status: 200,
      message: '查询成功',
      data: data
    };
  },

因为你在返回给前端数据之前已经调了let info = await UserModel.find({})也就是查询了接口,但是你返回给前端的时候body并没有返回值,导致404,建议打印一下此时的ctx

红焚 2022-09-18 20:07:43

const Router = require('koa-router');
const router = new Router();
const UserModel = require('../../models/User');



//统一返回格式
let responseData;


// 问题出在这个use, netx() async await

router.use((ctx, next) => {

    responseData = {
        code: 0,
        message: ''
    }

    next();

})

router.prefix('/api')

router.get('/login', ctx => {

    ctx.body = {
        code: 200,
        message: 'login成功',
        remark: ctx.request.query
    }
})

router.post('/registry', async (ctx, next) => {


    const username = ctx.request.body.username;
    const password = ctx.request.body.password;

    if (username == '') {
        responseData.code = 1;
        responseData.message = '用户名不能为空';
        ctx.body = responseData;
        return;
    }

    if (password == '') {
        responseData.code = 2;
        responseData.message = '密码不能为空';
        ctx.body = responseData;
        return;
    }



    // UserModel.findOne({
    //     username: username,
    //     password: password
    // }).then(async userInfo => {



    //     console.log('userInfo -- ', userInfo);

    //     if (userInfo) {
    //         //表示数据库中有该记录
    //         responseData.code = 4;
    //         responseData.message = '用户名已经被注册了';
    //         ctx.body = responseData;
    //         return;
    //     }

    //     //保存用户注册的信息到数据库中
    //     var user = new UserModel({
    //         username: username,
    //         password: password
    //     });

    //     console.log('user -- ', user);

    //     var res = await user.save();

    //     return res;

    // }).then(newUserInfo => {

    //     console.log('newUserInfo -- ', newUserInfo);


    //     responseData.message = '注册成功';
    //     responseData.remark = newUserInfo;
    //     ctx.body = responseData;

    // })

    


    responseData.message = '注册成功';
    responseData.remark = ctx.request.body;
    ctx.body = responseData;

})


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