繁体   English   中英

我使用 POSTMAN 检查 API 端点。 但是它的帖子 HTTP 方法无法正常工作

[英]I check API endpoints using POSTMAN. But its post HTTP method is not working properly

我使用 POSTMAN 检查 API 端点。 但其后 HTTP 方法无法正常工作。 这是用户登录后端代码。 从 mongo DB 数据库中获取数据并验证用户登录。 验证后用户可以轻松登录系统。

这是用户 Dao.js 文件。

用户DAO.js

const user = require('./index').db("newDb").collection("user");
const bcrypt = require('bcrypt');

var ObjectId = require('mongodb').ObjectId;

const register = ({userName, password, age, city}) => {

    bcrypt.hash(password, 10, function(err, hashPassword) {
        const insertResult = user.insertOne({userName, password, hashPassword, age, city});
        return insertResult;
    });

};

const login = async({userName, password}) => {

    const filteredDocs = await user.findOne({ userName: userName });
    
    if(filteredDocs){
        if(filteredDocs.password === password){
            return {success:true, msg: "Login Successfull"};
        }else{
            return {success:false, msg: "Password Incorrect Try Again"};
        }
    }else{
        return {success:false, msg: "Username Incorrect Try Again"};
    }
};

module.exports = {register, login};

这是 user.api 文件。

user.api.js

const {register, login} = require('../dal/user.dao');

const registerStudent = async({userName, password, age, city}) => {
    const user = {
        userName,
        password,
        age,
        city
    }
    return await register(user);
};

const loginUser = async({userName, password}) => {
    const user = {
        userName,
        password
    }
    return await login(user);
};

module.exports = {registerStudent, loginUser};

这是 userRouter.js 文件。

用户.Router.js

const Router = require('@koa/router');

const userRouter = new Router();

const {registerStudent, loginUser} = require('../api/user.api');

userRouter.post("/user/add", async ctx => {
    const data = ctx.request.body;
    const student =  registerStudent(data);
    ctx.body = {success:true};
    ctx.status = 201;
    ctx.set('Content-Type', 'application/json');
});

userRouter.post("/user/login", async ctx => {
    const data = ctx.request.body;
    const student =  loginUser(data);
    ctx.body = {status: student};
    ctx.status = 201;
    ctx.set('Content-Type', 'application/json');
});

module.exports = userRouter;

您似乎正在设置对请求的响应...

尝试这个:

userRouter.post("/user/add", async (ctx, res) => {
    const data = ctx.request.body;
    const student =  registerStudent(data);
    

    res.json({success:true});
    
});

userRouter.post("/user/login", async (ctx, res) => {
    const data = ctx.request.body;
    const student =  loginUser(data);

    res.json({status:student};

});

在用户路由器文件中,请在这些方法之前使用'await'关键字。

registerStudent(data);
loginUser(data);

在示例中,您可以使用

userRouter.post("/user/add", async ctx => {
    const data = ctx.request.body;
    const student = await registerStudent(data);
    ctx.body = {success:true};
    ctx.status = 201;
    ctx.set('Content-Type', 'application/json');
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM