Class construct not returning correct 'this'

I'm struggling with (and new to) implementing a good class pattern in Javascript. I'm defining my local vars and functions in the main body of my class function, and then returning the public interface as an object.

However, when I try to return the update result of an operation in one of my methods, I am unable to return the correct 'this' level - it returns the inner scope of my callback, not the update result of the operation on my object. Grateful for any help!

For example

var u=require('./models').User();

u.findUserById('1', function(err, user) {console.log(user)});

returns my db the db callback object, in the function below:

function User() {
    var user_uuid, local_email, local_password;

    function generateHash(password) {
        return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
    }

    function validPassword(password, password_compare) {
        return bcrypt.compareSync(password, password_compare);
    }

    function findUserByEmail(email, callback) {
        conn.query("SELECT * FROM users WHERE local_email=$1 LIMIT 1", [email], function (error, result) {
            //var user = this.User;
            if (!error) {
                if (result.rowCount > 0) {
                    local_email = result.rows[0].email;
                    user_uuid = result.rows[0].user_uuid;

                    //load rest of user obj
                }
            }
            callback(error, this);
        });  
    }

    function findUserById(id, callback) {
        conn.query("SELECT * FROM users WHERE user_uuid='' || $1 LIMIT 1", [id], function (error, result) {
            if (result.rowCount > 0) {
                //update
                user_uuid = result.rows[0].user_uuid;
                local_email = result.rows[0].local_email;
                local_password = result.rows[0].local_password;
                callback(null, this);
            } else {
                callback(null, this);
            }
        });
    }

    function save(callback) {
        conn.query("SELECT * FROM users WHERE user_uuid='' || $1", [user_uuid], function (error, result) {
            if (result.rowCount > 0) {
                //update
                conn.query("UPDATE users SET local_email=$1, local_password=$2 WHERE user_uuid=$3", [local_email, local_password, user_uuid], function (error, result) {
                    callback(error);
                })
            } else {
                //insert
                conn.query("INSERT users (user_uuid, local_email, local_password) VALUES ($1, $2, $3)", [require('node-uuid').v1(), local_email, local_password], function (error, result) {
                    callback(error);
                })
            }
        })
    }

    return {
        user_uuid: user_uuid,

        local: {
            email: local_email,
            password: local_password
        },
        facebook: {
            id: null,
            token: null,
            email: null,
            name: null
        },
        twitter: {
            id: null,
            token: null,
            displayName: null,
            username: null
        },
        google: {
            id: null,
            token: null,
            email: null,
            name: null
        },
        generateHash: generateHash,
        validPassword: validPassword,
        findUserByEmail: findUserByEmail,
        findUserById: findUserById,
        save: save

    }
};

You must assign the value of "this" to a variable in the outer scope and the use that variable in the inner scope.