Parse Cloud Code 嵌套查询上的代码 141(错误:未调用成功/错误)
Posted
技术标签:
【中文标题】Parse Cloud Code 嵌套查询上的代码 141(错误:未调用成功/错误)【英文标题】:Code 141 (error: success/error was not called) on Parse Cloud Code nested queries 【发布时间】:2016-01-14 17:37:18 【问题描述】:背景:
我有一个 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】:你的回调是一团糟。我重写了它以遵循更多的承诺链风格。更容易遵循。此外,underscore.js 是你的朋友。希望我的想法是对的。
var _ = require('underscore'); // javascript Library
Parse.Cloud.define("getNewPicture", function(request, response)
var username = request.params.username;
var notWantedPics = [];
if (!username)
return response.error('No username.');
var query1 = new Parse.Query("SeenPictures");
query1.ascending("createdAt");
query1.equalTo("username", username);
var SeenPictures = query1.find();
return Parse.Promise.when([SeenPictures]).then(function (SeenPictures)
SeenPictures = _.filter(SeenPictures, function (SeenPicture)
if (SeenPicture.get("likes") == 1 || SeenPicture.get("dislikes") == 1)
notWantedPics.push(SeenPicture.get("pictureId"));
return false;
else
return true;
);
// notWantedPics?
if (SeenPictures > 0)
var query2 = new Parse.Query("Pictures");
var Pictures = [query2.get(SeenPictures[0].get('pictureId'))];
else
var query2 = new Parse.Query("Pictures");
query2.notEqualTo("photographerUserName", username);
query2.notContainedIn("objectId", notWantedPics);
query2.ascending("createdAt");
var Pictures = query2.find();
return Parse.Promise.when([Pictures]);
).then(function (Pictures)
if (Pictures > 0)
// Success
return response.success(Pictures[0]);
else
return Parse.Promise.error("No pictures.");
, function (error)
// Error
return response.error(error);
);
);
【讨论】:
没问题!顺便说一句,来自渥太华的嗨!以上是关于Parse Cloud Code 嵌套查询上的代码 141(错误:未调用成功/错误)的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Parse Cloud Code 中的值返回到我的 iOS 应用程序?
使用 Parse Code Cloud Javascript 函数更改 Parse 列的值