DEV Community

Kauress
Kauress

Posted on

Sweet & Sour mongoose.js methods – 3

Alt Text

A short snippet to assist in linking of social media accounts in a userschema when using mongoDB & mongoose.js

async function generateOrFindUser(accessToken, refreshToken, profile, done) { const email = profile.emails[0].value; const name = profile.displayName || profile.username; const facebookId = profile.id; if (email) { let updatedUser = await User.findOneAndUpdate({facebookId},{email,name,facebookId}, {'upsert': true, 'new': true}, done); } else { var emailError = new Error("Your email privacy settings prevent you from signing in."); done(emailError, null); } } 
Enter fullscreen mode Exit fullscreen mode

User schema:

const UserSchema = new mongoose.Schema({ email: { type: String, unique: true, required: true, lowercase: true }, password: { type: String, required: true, trim: true, validate: validatePass }, name: { type: String, unique: true, required: true, lowercase: true, trim: true, minlength: 4 }, phone: { type: Number, trim: true }, question: { type: String, select: true }, answer: { type: String, required: true, trim: true }, status: { type: Boolean, required: true }, date: { type: Date, default: Date.now }, facebookId: { type : String } }); 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)