Parse Server上的以下Cloud Code功能无法按预期工作。
似乎太早解决,以至于并非promise2
的所有链式承诺都被执行。特别是我看到一些resultA.add(...);
没有被执行。
我试图重复安排这几次但没有成功。
我不确定return Parse.Promise.resolve();
是否应该在else
条款中返回,或者是否是其他内容或
有人能在这里发现什么吗?
Parse.Cloud.define("aFunction", function(request, response) {
var q = new Parse.Query("ClassA");
q.find()
.then(
function(resultsA) {
var promise = new Parse.Promise.as();
resultsA.forEach(function(resultA) {
promise = promise
.then(
function() {
var q = new Parse.Query("ClassB");
return q.first();
}
)
.then(
function(resultB) {
if (resultB != undefined) {
resultA.set(...);
return resultA.save();
} else {
resultA.set(...);
return resultA.save();
}
}
)
.then(
function() {
var q = new Parse.Query("ClassC");
return q.find()
.then(
function(resultsC) {
if (resultsC != undefined && resultsC.length > 0) {
var promise2 = new Parse.Promise.as();
resultsC.forEach(function(resultC) {
promise2 = promise2
.then(
function() {
resultA.add(...);
return resultA.save();
}
);
});
return promise2;
} else {
return Parse.Promise.resolve();
}
}
);
}
);
});
return promise;
}
)
.then(
function(result) {
response.success("success");
},
function(error) {
response.error(error.message);
}
);
});
长代码,但我已将其剥离并希望显示实际结构。感谢。
答案 0 :(得分:0)
刚查过你的代码。 当你为显示结构“清理代码”时,我不确定这是你的类型错误。
循环中的:chats.forEach(function(resultA)..
好像你还没有声明'聊天'变量。
另外,正如Parse官方推荐的那样,请尝试以下方法:
var _ = require('underscore.js');
var promise = Parse.Promise.as();
_.each(resultsA, function(resultA) {
promise = promise.then(function() {..}.then..then..
}
return promise;
希望这可以帮到你。