我正在尝试在Parse上使用Cloud Code在添加新行时删除预先存在的行。
这是我放在一起的当前代码:
var queryGoals = new Parse.Query(Parse.Object.extend('Goal'));
queryGoals.include('user');
queryGoals.equalTo('user', request.user);
queryGoals.find({
success: function(results) {
console.warn('Query Returned: ' + results.length);
Parse.Object.destroyAll(results);
},
error: function(user, error) {
console.warn('Error ' + error.code + ': ' + error.message);
}
});
控制台永远不会显示返回的记录数(我假设因为没有),也没有任何错误。当然,相同的代码(用户筛选器的Parse.User.current()
)会在客户端运行时返回预期的行数。
执行Cloud Code时查询的运行方式是否有所不同,或者我忽略了什么?
答案 0 :(得分:5)
我向Parse提交了一个错误报告,最后发现函数在成功函数执行之前就已经结束,因为它是异步运行的。我添加了正确的promise结构,以使其按预期工作(Additional Details):
queryGoals.find(
{
useMasterKey: true,
success: function(results)
{
Parse.Object.destroyAll(results);
},
error: function(user, error)
{
console.warn('Error ' + error.code + ': ' + error.message);
}
}).then(
function(object)
{
// Do Post-Query Stuff Here
response.success();
},
function(error)
{
console.warn('Error ' + error.code + ': ' + error.message);
}
);