Parse Cloud Code嵌套查询的代码141(错误:未成功/错误调用)

时间:2016-01-14 17:37:19

标签: ios parse-platform

背景

我有一个Parse的图像数据库。简单地说,我的代码就是这样做的:

用户通过Parse Cloud调用请求图像(“getNewPicture”)。嵌套在我内部检查他之前是否看过任何照片(以及其他要求),如果是,则提供一张特定图片(getSpecifiedPicture)。如果他没有,那么我发送一张新照片(getNewPicture)。

问题:

通过Parse Cloud Code函数调用“getNewPicture”我得到一个错误代码141.奇怪的是它可以通过Android而不是iOS。

我的代码:

Parse.Cloud.define("getNewPicture", function(request, response) {
  var SeenPictures = Parse.Object.extend("SeenPictures");
  var query = new Parse.Query(SeenPictures);
  var username = request.params.username;
  var notWantedPics = [];
  query.ascending("createdAt");
  query.equalTo("username", username);
  query.find({
    success: function(results) {
      for (var i = 0; i < results.length; i++) {
        if (results[i].get("likes") == 1 || results[i].get("dislikes") == 1) {
          notWantedPics.push(results[i].get("pictureId"));
          results.splice(i, 1);
          i--;
        }
      }
      if (results != 0) {
        getSpecifiedPicture(results[0].get("pictureId"), {
          success: function(returnValue) {
            response.success(returnValue);
          },
          error: function(error) {
            response.error(error);
          }
        });
      } else {
        getNewPicture(username, notWantedPics, {
          success: function(returnValue) {
            response.success(returnValue);
          },
          error: function(error) {
            response.error(error);
          }
        });  
      }
    },
    error: function() {
      response.error(error);
    }
  });
});

function getSpecifiedPicture(specifiedPic, callback) {
  var Pictures = Parse.Object.extend("Pictures");
  var pictures = new Parse.Query(Pictures);
  pictures.get(specifiedPic, {
    success: function(picture) {
      callback.success(picture);
    },
    error: function(error) {
      callback.error(error);
    }
  });
}

function getNewPicture(username, notWantedPics, callback) {
  var Pictures = Parse.Object.extend("Pictures");
  var pictures = new Parse.Query(Pictures);
  pictures.notEqualTo("photographerUserName", username);
  pictures.notContainedIn("objectId", notWantedPics);
  pictures.ascending("createdAt");
  pictures.find({
    success: function(results) {
      if (results.length > 0) {
        var object = results[0];
        //Some other fancy stuff
        object.save();
        callback.success(object);
      }
    },
    error: function(error) {
      callback.error(error);
    }
  });
}

为什么我会收到代码141?任何帮助表示赞赏。

感谢。

1 个答案:

答案 0 :(得分:2)

你的回调是一团糟。我重新编写它以遵循更多的承诺链样式。更容易遵循。另外,underscore.js是你的朋友。希望我的想法是正确的。

id  |  video_id  | user_id  | like_or_dislike
1   |  2         | 4        | 0
2   |  2         | 5        | 1