😽
アカウント登録機能作成中のエラー
問題
アカウント登録機能を作成しているときにパスワードがハッシュ化されないエラーがありました。
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