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

问题描述

接口正常, 只要操作数据库就前端就会报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写登录注册页面, 练练手

阅读 3.1k
2 个回答
  '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

新手上路,请多包涵

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;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏