Parse platform 筛选器解析。应保存到服务器的对象属性

Parse platform 筛选器解析。应保存到服务器的对象属性,parse-platform,Parse Platform,我有这个Parse.Object,我想保存到服务器上,但我想将保存的这个对象的属性列为白名单 Parse.Object.extend('someObject', { defaults: { foo: 1, bar: 2, computedProperty: function() { return this.get('foo') + this.get('bar') } }, get: function(attr) { var va

我有这个Parse.Object,我想保存到服务器上,但我想将保存的这个对象的属性列为白名单

Parse.Object.extend('someObject', {
  defaults: {
    foo: 1,
    bar: 2,

    computedProperty: function() {
      return this.get('foo') + this.get('bar')
    }
  },

  get: function(attr) {
    var value = Parse.Object.prototype.get.call(this, attr)

    return _.isFunction(value) ? value.call(this) : value
  }
})

如您所见,此对象在其属性中有一个属性。我想在保存此Parse.Object时过滤掉computedProperty。这可能吗?

因此,我们找到了一种过滤保存的属性列表的方法

Parse.Object.extend('someObject', {
  defaults: {
    foo: 1,
    bar: 2,

    computedProperty: function() {
      return this.get('foo') + this.get('bar')
    }
  },

  get: function(attr) {
    var value = Parse.Object.prototype.get.call(this, attr)

    return _.isFunction(value) ? value.call(this) : value
  }
})
如果您想这样做,必须重写Parse.Object上名为_getSaveJSON的私有、未记录的方法,因此上面的完整模型是:

Parse.Object.extend('someObject', {
  defaults: {
    foo: 1,
    bar: 2,

    computedProperty: function() {
      return 1+2
    }
  },

  get: function(attr) {
    var value = Parse.Object.prototype.get.call(this, attr)

    return _.isFunction(value) ? value.call(this) : value
  },

  _getSaveJSON: function() {
    var model = this
    var json = _.clone(_.first(this._opSetQueue))
    Parse._objectEach(json, function(op, key) {
      json[key] = op.toJSON();
    });
    var whitelistedAttributes = ['foo', 'bar']

    return _.pick(json, whitelistedAttributes)
  }
})