ユーザーが次の認証を介してログインするときに、カスタム フィールドをデフォルトのユーザー モデルに追加する必要があります。公式ドキュメントhttps://next-auth.js.org/tutorials/typeorm-custom-modelsでメソッドを試しました。
以下は私のコードです:
モデル/User.js
import Adapters from "next-auth/adapters";
export default class User extends Adapters.TypeORM.Models.User.model {
constructor(name, email, image, emailVerified) {
super(name, email, image, emailVerified);
}
}
export const UserSchema = {
name: "User",
target: User,
columns: {
...Adapters.TypeORM.Models.User.schema.columns,
// Adds a phoneNumber to the User schema
phoneNumber: {
type: "varchar",
nullable: false,
default: "test",
},
},
};
モデル/index.js
import User, { UserSchema } from "./User";
export default {
User: {
model: User,
schema: UserSchema,
},
};
pages/api/auth/[...nextauth].js
import NextAuth from "next-auth";
import Providers from "next-auth/providers";
import Adapters from "next-auth/adapters";
import Models from "../../../models";
const { MONGODB_URI } = process.env;
export default NextAuth({
providers: [
Providers.Google({
clientId: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
}),
],
adapter: Adapters.TypeORM.Adapter(
MONGODB_URI,
{
models: {
User: Models.User,
},
}
),
});
これにより、電話番号の追加フィールドがユーザー モデルに追加されたはずですが、データベースをチェックすると、デフォルトのフィールドしか含まれていません。ここで何が間違っていますか?同じ結果を達成するためのより良い方法はありますか??