I am using MongoDB and clerk to save new user, and for new user default role is 'user' which I already created in schema but new field role is not created in model.
import mongoose, { model, models, Schema } from "mongoose";
const UserSchema = new Schema({
clerkId: {
type: String,
required: true,
unique: true,
},
email: {
type: String,
required: true,
unique: true,
},
username: {
type: String,
required: true,
unique: true,
},
photo: {
type: String,
required: true,
},
firstName: {
type: String,
},
lastName: {
type: String,
},
role:{
type: String,
enum: ['user', 'admin'],
default: 'user',
}
});
const User = models?.User || model("User", UserSchema)
export default User;
clerk webhook logic inside route file
if (eventType === "user.created") {
const { id, email_addresses, image_url, first_name, last_name, username } =
evt.data;
console.log(evt.data, 'evt data')
const user = {
clerkId: id,
email: email_addresses[0].email_address,
username: username!,
firstName: first_name,
lastName: last_name,
photo: image_url,
};
const newUser = await createUser(user);
if (newUser) {
await clerkClient.users.updateUserMetadata(id, {
publicMetadata: {
userId: newUser._id,
},
});
}
return NextResponse.json({ message: "New User Created", user: newUser });
}