为什么Parse.Cloud.run在成功时将返回对象解码为对象引用?

时间:2016-01-25 08:15:56

标签: javascript parse-platform cloud-code

Parse Javascript SDK 1.6.4为例,

来自第179行:

_CoreManager2['default'].setCloudController({
  run: function run(name, data, options) {
    var RESTController = _CoreManager2['default'].getRESTController();

    var payload = (0, _encode2['default'])(data, true);

    var requestOptions = {};
    if (options.hasOwnProperty('useMasterKey')) {
      requestOptions.useMasterKey = options.useMasterKey;
    }
    if (options.hasOwnProperty('sessionToken')) {
      requestOptions.sessionToken = options.sessionToken;
    }

    var request = RESTController.request('POST', 'functions/' + name, payload, requestOptions);

    return request.then(function (res) {
      var decoded = (0, _decode2['default'])(res);
      if (decoded && decoded.hasOwnProperty('result')) {
        return _ParsePromise2['default'].as(decoded.result);
      }
      return _ParsePromise2['default'].error(new _ParseError2['default'](_ParseError2['default'].INVALID_JSON, 'The server returned an invalid response.'));
    })._thenRunCallbacks(options);
  }
});

_decode2 ['默认']从第4144行使用fromJSON for Parse Object:

key: 'fromJSON',
value: function fromJSON(json) {
  if (!json.className) {
    throw new Error('Cannot create an object without a className');
  }
  var constructor = classMap[json.className];
  var o = constructor ? new constructor() : new ParseObject(json.className);
  var otherAttributes = {};
  for (var attr in json) {
    if (attr !== 'className' && attr !== '__type') {
      otherAttributes[attr] = json[attr];
    }
  }
  o._finishFetch(otherAttributes);
  if (json.objectId) {
    o._setExisted(true);
  }
  return o;
}

我在我的云代码运行成功回调中传递了一个完整的Parse对象,但是这个解码行为将我返回的Parse对象清除为对象引用。

为什么我们要这个?

是否可以选择获取完整对象而不是引用?

我想要的是获取更新的对象以更新我对成功的看法。

0 个答案:

没有答案