code: function(schemaName, target, cb, options) {
    var schema  = SCHEMA[schemaName]
      , idField = schema._idField_
      , id      = target[idField]
      , options = options || {}
  
    if (typeof id == 'undefined' || id === '') {
      cb && cb(new Error('update ' + schemaName + ' failed: ID is not exist'))
      return
    }
  
    var key = schemaName + ':' + id
  
    client.hgetall(key, function(err, object) {
      if (!object && options.mode != 'insert') {
        cb && cb(err || new Error('update ' + key + ' failed: object doesn\'t exist'))
        return
      }
  
      filter(schemaName, target, function(err, result) {
        if (err || result === false) {
          cb && cb(err || new Error('update ' + schemaName + ' failed: invalid field value'))
          return
        }
  
        client.hmset(schemaName + ':' + id, target, function(err) {
          if (err) {
            cb && cb(err)
            return
          }
  
          filter(schemaName, target, cb, { FUNCS: COMMANDS, mode: options.mode, oldModel: object  })
        })
      }, { FUNCS: FILTERS, mode: options.mode, oldModel: object })
  
    })
  
  }
docs: /*
  更新传进来的target
  Update只能更新包含ID字段的数据
  target若存在ID字段, 则以此ID进行更新否则新添加一条记录