Parse.Collection.fetch不考虑“parse:true”选项

时间:2014-09-29 11:07:04

标签: javascript parse-platform

我有一个模型,我想添加parse方法,以便进行额外的数据工作(为日期字段设置moment.js对象)。

但是从不调用函数(模型和集合)。

收藏:

class SomethingCollection extends Parse.Collection
    model: SomethingModel

    parse: ->
        console.log('parse from collection')

模特:

class SomethingModel extends Parse.Object
    className: 'Something'

    parse: ->
        console.log('parse from model')

从视图:

@collection = new SomethingCollection()
@listenTo( @collection, 'add', -> console.log('fire add event') )
@collection.fetch(parse: true, silent: false, add: true)

编辑:

似乎发生在Parse.Query.find回调中,请参阅下面的代码注释。 所以它也不能在initialize方法中完成,但在其他地方呢?我怀疑Parse.Object与Bakbone.Model

不太相似
find: function(options) {
  var self = this;
  options = options || {};

  var request = Parse._request({
    route: "classes",
    className: this.className,
    method: "GET",
    useMasterKey: options.useMasterKey,
    data: this.toJSON()
  });

  return request.then(function(response) {
    return _.map(response.results, function(json) {
      var obj;
      if (response.className) {
        obj = new Parse.Object(response.className); // <- no attributes or options used, blank object
      } else {
        obj = new self.objectClass(); // <- no attributes or options used, blank object
      }
      obj._finishFetch(json, true); // <- magically do things out of any constructor or parse function
      return obj;
    });
  })._thenRunCallbacks(options);
},

1 个答案:

答案 0 :(得分:0)

除了重新声明那个被诅咒的_finishFetch方法之外,我找不到其他方法:

original_finishFetch = _(Parse.Object.prototype._finishFetch)
Parse.Object.prototype._finishFetch = (serverData, hasData) ->
  original_finishFetch.bind(@)(@parse(serverData), hasData)

这样就可以在parse方法中处理数据,因为它可以与任何Backbone Model或任何sdk which implements the Backbone Model interface.

一起使用