javascript - API 在未发送 /api/users/create 响应的情况下解析,这可能会导致请求停止。下一个
问题描述
我创建了一个 API 端点来处理我的 Next.js 应用程序中的用户帐户创建,并且我正在使用knex.js来处理我的查询,但我仍然收到此错误:
API resolved without sending a response for /api/users/create, this may result in stalled requests.
我的代码/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);
}
}
解决方案
实际上 bcrypt散列函数是一个异步函数,它返回一个承诺,要么使用加密数据盐解决,要么因错误而拒绝。
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();
}
}
推荐阅读
- c# - 尝试创建抽象层以支持多个第三方作为文档管理系统
- r - 如何使用 felm() 指定工具变量模型?
- mysql - 填空 ID MySQL
- php - 如何从附件描述wordpress中获取peragraph的关键字?
- python - Pandas 强制对包含重复键的列进行一对一合并
- mysql - 如何在 AFTER UPDATE 触发器中引用最近更新的行
- c# - 如何在发布模式下激活时在调试模式下关闭 Visual Studio 中的 DocFX?
- javascript - 编辑记录时显示所选值
- php - 添加取消 URL - Mollie 付款
- android - 当我们使用 Firebase 创建 GTM 容器时,我们可以在 android 应用程序中使用多个 GTM 容器吗?