Skip to content

Instantly share code, notes, and snippets.

@hoegaarden
Created January 24, 2014 17:40
Show Gist options
  • Save hoegaarden/8602233 to your computer and use it in GitHub Desktop.
Save hoegaarden/8602233 to your computer and use it in GitHub Desktop.
pgCamelCaseResultFieldNamesMonkeyPatch
var pg = require('pg');
;(function(pg){
function camelCaser(snake) {
var tokens = snake.split(/_+/).filter(function(token){
return token.length;
});
return tokens.length ?
tokens.shift().toLowerCase().concat(
tokens.map(function(token){
return token.charAt(0).toUpperCase().concat(
token.substring(1)
);
}).join('')
) :
snake
;
}
var queryProto = pg.Query.prototype;
var orgHandleRowDescription = queryProto.handleRowDescription;
queryProto.handleRowDescription = function(msg){
msg.fields.forEach(function(field){
field.name = camelCaser(field.name);
});
return orgHandleRowDescription.call(this, msg);
};
})(pg);
var connectionString = '';
pg.connect(connectionString, function(err, client, done) {
client.query("SELECT 1 as snake_case_bla, 1 as _blipp_, 1 as __SOME_wired_SNAKE_____CaSe__, 1 as _", function(err, result) {
console.dir(result);
done();
});
});
pg.end();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment