javascript - API 在未发送/api/users/create 响应的情况下解析,这可能会导致请求停止。下一个

标签 javascript node.js api next.js knex.js

我创建了一个 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 散列函数是一个异步函数,它返回一个 promise ,要么使用加密数据盐解决,要么因错误而拒绝。

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();
  }
}

关于javascript - API 在未发送/api/users/create 响应的情况下解析,这可能会导致请求停止。下一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63339274/

相关文章:

javascript - 如何判断4个并行的 "require"回调是否全部完成?

JavaScript 删除循环

javascript - 正则表达式匹配变量

node.js - 如何在 header 中传递参数

api - 有没有一种方法可以通过YouTube API v3设置不喜欢和不喜欢的评论?

api - 如何知道Youtube用户是否已通过验证

javascript - 如何检查参数是否存在于 node.js 的查询字符串中

javascript - AngularJS orderyby 两位数

javascript - Try-Catch 不处理 Node 中 https.get 请求的错误

java - 从 Android Studio 中的 CSV 文件中获取信息?