本文介绍了API 在未发送/api/users/create 响应的情况下解析,这可能会导致请求停止.下一个的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我创建了一个 API 端点来处理我的 Next.js 应用程序中的用户帐户创建,并且我正在使用 knex.js 来处理我的查询,但我仍然收到此错误:
API 在未发送/api/users/create 响应的情况下解析,这可能会导致请求停止.
我的代码在/pages/api/users/create.js
:
import { hash } from 'bcrypt';从'../../../knex'导入knex;导出默认异步函数 regiterUser(req, res) {if (req.method === 'POST') {尝试 {hash(req.body.password, 10, 异步函数 (_, hash) {等待 knex('用户').insert({名称:req.body.name,电子邮件:req.body.email,角色:'用户',允许:真,密码:哈希,});重发();});} 捕捉(错误){res.status(err).json({});}} 别的 {res.status(405);}}
解决方案
实际上 bcrypt hash 函数是一个异步函数,它返回一个承诺,要么使用加密数据 salt 解决,要么拒绝使用一个错误.
从'../../../knex'导入knex;导出默认异步函数 regiterUser(req, res) {if (req.method === 'POST') {尝试 {const hashed = await hash(req.body.password, 10);等待 knex('用户').insert({名称:req.body.name,电子邮件:req.body.email,角色:'用户',允许:真,密码:散列,});res.status(200).end();} 捕捉(错误){res.status(err).json({});}} 别的 {res.status(405);重发();}}
I created an API endpoint to handle user account creation in my Next.js app, and I am using knex.js to handle my queries, but I still get this error:
My code in /pages/api/users/create.js
:
import { hash } from 'bcrypt';
import knex from '../../../knex';
export default async function regiterUser(req, res) {
if (req.method === 'POST') {
try {
hash(req.body.password, 10, async function (_, hash) {
await knex('users').insert({
name: req.body.name,
email: req.body.email,
role: 'user',
allowed: true,
password: hash,
});
res.end();
});
} catch (err) {
res.status(err).json({});
}
} else {
res.status(405);
}
}
解决方案
actually the bcrypt hash function is an async function, it returns a promise to be either resolved with the encrypted data salt or rejected with an Error.
import knex from '../../../knex';
export default async function regiterUser(req, res) {
if (req.method === 'POST') {
try {
const hashed = await hash(req.body.password, 10);
await knex('users').insert({
name: req.body.name,
email: req.body.email,
role: 'user',
allowed: true,
password: hashed,
});
res.status(200).end();
} catch (err) {
res.status(err).json({});
}
} else {
res.status(405);
res.end();
}
}
这篇关于API 在未发送/api/users/create 响应的情况下解析,这可能会导致请求停止.下一个的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!