😽

アカウント登録機能作成中のエラー

2024/03/24に公開

問題

アカウント登録機能を作成しているときにパスワードがハッシュ化されないエラーがありました。

import {connect} from "@/dbConfig/dbConfig";
import {NextRequest,NextResponse} from "next/server";
import User from "@/models/userModel";
import bcryptjs from "bcryptjs";


connect()

export async function POST(request:NextRequest){
    try {
        const reqBody=request.json();

        const {username,email,password}=reqBody;
        const user=await User.findOne({email});

        if(user){
            return NextResponse.json({message:'user already exists'},{status:400})
        }

        const salt=await bcryptjs.genSalt(10);
        console.log(salt)
//この下がエラー
        const hashedPassword=await bcryptjs.hash(password,salt);
        console.log('dd')
        const newUser=new User({
            username,
            email,
            password:hashedPassword
        })

        const savedUser=await newUser.save();
        //
        return NextResponse.json({
            message:'User created successfully',
            success:true,
            savedUser
        })
    }catch(error:any){
        return NextResponse.json({error:error.message},{status:500})
    }
    }

解決策

二分探索で調べたところ

      const hashedPassword=await bcryptjs.hash(password,salt);

ここからが機能していないことに気づき、いろいろと調べましたがエラーの理由が分かりませんでした。コードをもう一度見てみると、asyncで非同期処理にしているので、コードの初めの

const reqBody=request.json()

const reqBody=await request.json()

にしなければいけないと気づきました。
みなさんも気をつけてください!

Discussion