Modelo User
# Install dependecies
npm i -S crypto Schema
/**
* user model
*/
const crypto = require('crypto');
const mongoose = require('mongoose');
const { Schema } = mongoose;
const authTypes = ['github', 'twitter', 'facebook', 'google'];
const AdditionalDataSchema = new Schema({
address: { type: String, uppercase: true },
phoneNumber: { type: String },
country: { type: String, default: 'COLOMBIA', uppercase: true },
city: { type: String, default: 'MEDELLIN', uppercase: true },
language: { type: String, default: 'ES', uppercase: true },
timeZone: { type: String, default: 'America/Bogota' },
picture: { type: String, lowercase: true },
}, { _id: false });
const UserSchema = new Schema({
name: String,
email: {
type: String,
lowercase: true,
unique: true,
trim: true,
required() {
if (authTypes.indexOf(this.provider) === -1) {
return true;
}
return false;
},
},
role: { type: String, default: 'user' },
password: {
type: String,
required() {
if (authTypes.indexOf(this.provider) === -1) {
return true;
}
return false;
},
},
additionalData: AdditionalDataSchema,
provider: String,
salt: String,
google: {},
github: {},
passwordResetToken: String,
passwordResetExpires: Date,
}, { timestamps: true });
UserSchema
.path('role')
.validate(value => /admin|manager|user/i.test(value), 'role, assigned role is invalid');
module.exports = mongoose.model('User', UserSchema);Schema Virtual
Schema Validation
Schema Hook
Schema Methods
Código fuente aquí
Last updated