У меня есть база данных для пользователя, которая включает имя, адрес электронной почты, адрес, пароль IC и т. Д. В настоящее время я использую локальную паспортную стратегию для аутентификации пользователя.
Я хочу интегрировать стратегию facebook. Я могу понять процесс. но проблема, с которой я сталкиваюсь, заключается в том, как загрузить свои данные (имя, IC, адрес и т. д.) из базы данных после успешного входа в Facebook. Facebook выдает только электронную почту, имя и т. д. Я хочу быть похожим, после входа в систему через facebook. Мой req.user будет иметь пользовательские данные из базы данных, как и локальная стратегия
USER MODEL
const userSchema = new mongoose.Schema({
// add
// Gender
//IC number
name: {
type: String,
requried: true,
default: undefined,
trim: true
},
IC: {
type: String,
requried: false,
default: undefined,
trim: true
},
gender: {
type: String,
requried: true,
default: undefined
},
email: {
type: String,
requried: true,
default: undefined,
trim: true,
unique: true, //One email can register once
vlaidate(value) {
if (!validator.isEmail(value)) {
throw new error('Email is invalid.');
}
}
},
password: {
type: String,
require: true,
default: undefined,
trim: true,
minlength: 9 //password must be 9 characters long
},
phone: {
type: String,
requried: true,
default: undefined,
maxlength: 14,
//checking for Malaysian Number
validate(value) {
if (!validator.isMobilePhone(value, 'ms-MY', {
strictMode: true
})) {
throw new Error('Phone Number is invalid');
}
}
},
//for members to know wether they deactivated or the application is pending
status: {
type: String,
default: undefined,
enum: ['active', 'deactivated', 'pending']
},
//roles will be assigned by the server.
role: {
type: String,
requried: true,
enum: ['user', 'admin']
},
imageProfile: {
type: String,
default: undefined,
trim: true
}