nodejsオブジェクト保存redis除去propotype
1693 ワード
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
})
}