Skip to content

Instantly share code, notes, and snippets.

@tdd
Created December 4, 2014 16:59
Show Gist options
  • Save tdd/b00822b246cf81b5ff48 to your computer and use it in GitHub Desktop.
Save tdd/b00822b246cf81b5ff48 to your computer and use it in GitHub Desktop.
findOrCreateByAuth
userSchema.statics.findOrCreateByAuth = function findOrCreateByAuth(id, name, provider, done) {
var User = this;
User.update(
{ _id: id, provider: provider },
{ name: name, provider: provider },
{ upsert: true },
function(err, numAffected, details) {
if (err) {
return done(err);
}
if (details.updatedExisting) {
return done(null, id);
}
User.update(
{ _id: id, provider: provider },
{ joinedAt: Date.now() },
null,
function(err) { done(err, id); }
);
}
);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment