gpt4 book ai didi

javascript - 如何使用 koa ctx body 进行多个响应?

转载 作者:行者123 更新时间:2023-12-01 16:26:55 31 4
gpt4 key购买 nike

我是 koa 和 postgresql Node 的新手。我创建了一个用户登录 api,但我收到 404 not found 错误。我的查询和检查工作正常,因为我在控制台上检查但 ctx.body 不起作用。我如何使用 koa ctx.body 处理多个响应?不知道为什么没有 ctx.body 工作。我们如何解决这个问题?
希望你明白我的问题。


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

var email = ctx.request.body.email;
var password = ctx.request.body.password;

if (
!email ||
!password
) {
ctx.response.status = 400;
ctx.body = {
status: 'error',
message: 'Please fill all the fields'
}
} else {

await ctx.app.pool.query("SELECT * FROM users WHERE email = $1",
[`${email}`],
async (err, result) => {
if(err){
console.log(err);
throw err;
}
if (result) {
await bcrypt.compare(password, result.rows[0].password).then(function (res) {

if (res === true) {
ctx.body = {
status: 200,
message: "User login successfully",
data: result.rows[0],
};
}else{
ctx.body = {
status: 400,
message: "Incorrect password",
}
}
});
}else{
ctx.body = {
status: 400,
message: "Invalid email",
}
}
});
}
});

最佳答案

关于您的 404 问题:
HTTP 404 意味着您的路由尚不存在。请确保您的 router.post('/userLogin')路由器实际上是通过 app.use(router.routes()) 注册的.

引用您关于使用 ctx.body 的问题对于多个响应:

您可以设置 ctx.body多次但只有最后一个将用于响应。

例如:

ctx.body = 'Hello'
ctx.body = 'World'

此示例将响应 World .

您可以连接您的值以便将它们作为一个字符串/对象发送,或者使用流来控制读取流缓冲区。查询 https://stackoverflow.com/a/51616217/1380486https://github.com/koajs/koa/blob/master/docs/api/response.md#responsebody-1用于文档。

关于javascript - 如何使用 koa ctx body 进行多个响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59408367/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com