代码之家  ›  专栏  ›  技术社区  ›  vromanch

Sailjs水线:序列化、分析和初始化模型

  •  1
  • vromanch  · 技术社区  · 9 年前

    假设我使用下一个命令找到了用户:

    User.findOne(id).exec(function(err, user){
      redis.set(JSON.stringify(user), id);
    })
    

    之后,我将从redis加载我的对象

    redis.get(id, function(err, reply){
      if(!err && reply) {
        var user = JSON.parse(reply);
    
        // here methods like user.save() or any of defined manually by developer is unavailable
    
        // 
      } else {
        ..
      }
    })
    

    用户模型示例:

    module.exports = {
    
      attributes    : {
        // Simple attribute:
        // name: 'STRING',
    
        // Or for more flexibility:
        // phoneNumber: {
        //  type: 'STRING',
        //  defaultValue: '555-555-5555'
        // }
    
        email : {
          type: 'string',
          unique: true
        },
    
        // ... 
    
        verifyPass: function(pass, callback) {
          var obj = this.toObject();
          if (callback) {
            return Password.compare(pass, obj.local.password, callback);
          }
          return Password.compareSync(pass, obj.local.password);
        },
    
        // retrieve profile for sending to front end
        getProfile: function() {
          var obj = this.toObject();
          var profile = {};
    
          profile.id = obj.id;
          // ...
          return profile;
        },
    

    每当我从json解析水线模型时,我需要所有这些方法都能正常工作。有没有一种方法可以在不触发db的情况下初始化它。如果我能调用user.save(),也会很好。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Devin Ivy    9 年前

    不幸的是,目前还没有文档化的公共API,

    var user = new PersonCollection._model(values, {showJoins: true});
    

    看看这对你有什么好处!