解析服务器云代码destroyAll失败,无效错误

时间:2017-02-02 12:16:03

标签: cloud-code parse-server

我正在将一些以前正在运行的云代码更新到新的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 });
});

如果我查看仪表板中的resultsStations中的对象仍然存在,并且在服务器日志中我收到错误:

“删除相关的健身站600时出错:未定义”

600似乎不是有效的错误代码。

Error code list here

1 个答案:

答案 0 :(得分:2)

查看本地解析服务器上的Parse.Error定义(\ node_modules \ parse \ lib \ node \ ParseError.js),代码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的使用有关。我很久以前就转移到使用Promise,但是如果我没记错的话应该是这样的(对于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
        });