0

ユーザーが次の認証を介してログインするときに、カスタム フィールドをデフォルトのユーザー モデルに追加する必要があります。公式ドキュメント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,
      },
    }
  ),

  });

これにより、電話番号の追加フィールドがユーザー モデルに追加されたはずですが、データベースをチェックすると、デフォルトのフィールドしか含まれていません。ここで何が間違っていますか?同じ結果を達成するためのより良い方法はありますか??

4

1 に答える 1