解析服务器云代码 destroyAll 失败并出现无用的错误
Parse Server Cloud Code destroyAll fails with unhelpful error
我正在将一些以前工作的云代码更新到新的 Parse Server。我已经用传递 useMasterKey 的新方法对其进行了更新。
查询部分似乎在填充 resultStations 数组时正常工作,但删除失败。
Parse.Cloud.afterDelete("Workout", function(request) {
query = new Parse.Query("WorkoutStation");
query.equalTo("workout", request.object);
query.find({
success: function(resultingStations) {
console.log('Found these to delete:' + resultingStations);
Parse.Object.destroyAll(resultingStations, {
success: function() {
console.log('Did successfully delete');
},
error: function(error) {
console.error("Error deleting related workout stations " + error.code + ": " + error.message);
}
}, { useMasterKey: true });
},
error: function(error) {
console.error("Error finding related workout stations " + error.code + ": " + error.message);
}
}, { useMasterKey: true });
});
如果我查看仪表板,resultingStations 中的对象仍然存在,并且在服务器日志中我收到错误:
"Error deleting related workout stations 600: undefined"
600 似乎不是有效的错误代码。
查看我本地 Parse Server (\node_modules\parse\lib\node\ParseError.js) 上的 Parse.Error 定义,代码 600 表示聚合错误,如下所示:
/**
* Error code indicating that there were multiple errors. Aggregate errors
* have an "errors" property, which is an array of error objects with more
* detail about each error that occurred.
* @property AGGREGATE_ERROR
* @static
* @final
*/
ParseError.AGGREGATE_ERROR = 600;
这解释了为什么 error.message
未定义。 error.errors
应该是一个错误数组,它可以给你一些提示,告诉你出了什么问题。
至于根本原因,我感觉可能与useMasterKey的使用有关。我很久以前就开始使用 Promises,但如果我没记错的话应该是这样的(对于 destroyAll 部分):
Parse.Object.destroyAll(resultingStations, {
success: function() {
console.log('Did successfully delete');
},
error: function(error) {
console.error("Error deleting related workout stations " + error.code + ": " + error.message);
},
useMasterKey: true
});
我正在将一些以前工作的云代码更新到新的 Parse Server。我已经用传递 useMasterKey 的新方法对其进行了更新。
查询部分似乎在填充 resultStations 数组时正常工作,但删除失败。
Parse.Cloud.afterDelete("Workout", function(request) {
query = new Parse.Query("WorkoutStation");
query.equalTo("workout", request.object);
query.find({
success: function(resultingStations) {
console.log('Found these to delete:' + resultingStations);
Parse.Object.destroyAll(resultingStations, {
success: function() {
console.log('Did successfully delete');
},
error: function(error) {
console.error("Error deleting related workout stations " + error.code + ": " + error.message);
}
}, { useMasterKey: true });
},
error: function(error) {
console.error("Error finding related workout stations " + error.code + ": " + error.message);
}
}, { useMasterKey: true });
});
如果我查看仪表板,resultingStations 中的对象仍然存在,并且在服务器日志中我收到错误:
"Error deleting related workout stations 600: undefined"
600 似乎不是有效的错误代码。
查看我本地 Parse Server (\node_modules\parse\lib\node\ParseError.js) 上的 Parse.Error 定义,代码 600 表示聚合错误,如下所示:
/**
* Error code indicating that there were multiple errors. Aggregate errors
* have an "errors" property, which is an array of error objects with more
* detail about each error that occurred.
* @property AGGREGATE_ERROR
* @static
* @final
*/
ParseError.AGGREGATE_ERROR = 600;
这解释了为什么 error.message
未定义。 error.errors
应该是一个错误数组,它可以给你一些提示,告诉你出了什么问题。
至于根本原因,我感觉可能与useMasterKey的使用有关。我很久以前就开始使用 Promises,但如果我没记错的话应该是这样的(对于 destroyAll 部分):
Parse.Object.destroyAll(resultingStations, {
success: function() {
console.log('Did successfully delete');
},
error: function(error) {
console.error("Error deleting related workout stations " + error.code + ": " + error.message);
},
useMasterKey: true
});