redis - 这段代码创建的数据带有原型链上的方法,应该怎么改?
滿天的星座
滿天的星座 2017-05-31 10:31:30
[Redis讨论组]
const redis = require('redis');

const bcrypt = require('bcrypt');

const db = redis.createClient();

function User(obj) {
  for (let key in obj) {
    this[key] = obj[key]
  }
}

User.prototype.save = function (fn) {
  if (this.id) {
    this.update(fn);
  } else {
    let user = this;
    db.incr('user:ids', function (err, id) {
      if (err) {
        return fn(err);
      }
      user.id = id;
      user.hashPassword(function (err) {
        if (err) {
          return fn(err);
        }
        user.update(fn);
      })
    })
  }
};


User.prototype.update = function (fn) {
  let user = this;
  let 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);
    });
  });
};


User.prototype.hashPassword = function (fn) {
  let user = this;
  bcrypt.genSalt(12, function (err, salt) {
    if (err) {
      return fn(err);
    }
    user.salt = salt;
    bcrypt.hash(user.pass, salt, function (err, hash) {
      if (err) {
        return fn(err);
      }
      user.pass = hash;
      fn();
    });
  });
};
滿天的星座
滿天的星座

全部回复(1)
巴扎黑

JSON.parse(JSON.stringify(data)) 即可去除数据中的函数属性(别小看它!速度很快!)。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号