Skip to content

Instantly share code, notes, and snippets.

@mbriggs
Created February 15, 2013 21:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mbriggs/4963698 to your computer and use it in GitHub Desktop.
Save mbriggs/4963698 to your computer and use it in GitHub Desktop.
terrible code with promises
var db = {
insertUser: function(email){
var result = defer();
client.query("INSERT INTO users(email, name) VALUES($1, $1)", [email], result.resolve);
return result.promise;
},
findUser: function(email){
var result = defer();
client.query("SELECT * FROM users WHERE email = $1", [email], function(err, data){
if(!err){
result.resolve(data.rows[0]);
}else{
result.reject(err);
}
});
return result.promise;
},
findOrCreateUser: function(email){
var result = defer();
var create = this.insertUser;
var find = this.findUser;
find(email).then(function(user){
if(user){
result.resolve(user);
}else{
create(email).then(function(){
result.resolve(find(email));
});
}
}, result.reject);
return result.promise;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment