DEV Community

Kauress
Kauress

Posted on

2

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

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)