当用户通过下一个身份验证登录时,我需要将自定义字段添加到默认用户模型。我尝试了官方文档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,
},
}
),
});
这应该在用户模型中添加了一个额外的电话号码字段,但是当我检查 db 时,它只包含默认字段。我在这里做错了什么?有没有更好的方法来达到同样的结果??