nodejs 对象保存redis 去除propotype

来源:互联网 发布:linux terminal 命令 编辑:程序博客网 时间:2024/06/05 11:24

node.js 实践 user保存redis 会保存propotype方法,改变方法定义方式,可避免propotype持久化到redis

function User(obj) {    for (var key in obj) {        this[key] = obj[key];        console.log(obj[key]);    }    this.save = function (fn) {        if (this.id) {            this.update(fn);        } else {            var user = this;            debugger            db.incr("user:ids", function (err, id) {                if (err) {                    return fn(err);                }                debugger                user.id = id;                user.hashPassword(function (err) {                    if (err) {                        return fn(err);                    }                    debugger                    user.update(fn);                })            })        }    }    this.hashPassword=function (fn) {        var user = this;        bcrypt.genSalt(12, function (err, salt) {            if (err) {                return fn(err);            }            user.pass = salt;            fn();        })    }    this.update=function (fn) {        var user = this;        var id = user.id;        db.set('user:id:' + user.name, id, function (err) {            if (err) {                return fn(err);            }            db.hmset('user:' + id, user, function (err) {                fn(err);            })        })    }    Object.defineProperty(this, "save", {        enumerable: false    })    Object.defineProperty(this, "update", {        enumerable: false    })    Object.defineProperty(this, "hashPassword", {        enumerable: false    })}