javascript - Parse.Cloud多个成功函数称为

原文 标签 javascript backbone.js parse-platform

我正在开发一个照片应用程序,我正在编写一个Parse.Cloud过程来更新任何类型的照片类型计数。

例:

动物-> 300张照片
玩具-> 350张照片
等等..

这是云代码

Parse.Cloud.define("updateCategoriesCount", function(request,response){
Parse.Cloud.useMasterKey();
var queryCategory = new Parse.Query("categories");
queryCategory.find({
    success: function(categories){
        for (category in categories){
            var queryRecipes = new Parse.Query("photos");
            queryRecipes.equalTo("categoryObj",category);
            queryRecipes.count({
                success: function(count){
                    category.set("count",count);
                    category.save();
                },
                error: function(error){
                    response.error("Error on counting photos for category");
                }
            });

        }
    },
    error: function(error){}
});


});

但是当调用该函数时,日志为:

输入:{}
  失败:错误:无法多次调用成功/错误
    在Object.error(:106:9)
    在Object.queryPhotos.count.error(main.js:196:16)
    在Parse.js:2:7842
    在f(Parse.js:2:6754)
    在Parse.js:2:6246
    在Array.forEach(本机)
    在Object.x.each.x.forEach [作为_arrayEach](Parse.js:1:664)
    在c.extend.reject(Parse.js:2:6199)
    在f(Parse.js:2:6949)
    在Parse.js:2:6246

如何解决这个问题?

谢谢大家:D

最佳答案

您的错误处理程序将被多次调用,因此您应该尝试查找导致错误的原因。代替

response.error("some error string");


使用

response.error(error.message);


这样您就可以检查您的Parse.com日志并查看发生了什么。请记住,.count()函数是异步的,这意味着无论有多少失败或成功,它都会被多次调用。您最好在这里使用Promise,但让我们先看看错误是什么...

相关文章:

android - 如何迁移解析导出的数据库?

javascript - TypeScript和Socket.io

javascript - 尝试添加显示/隐藏按钮,但被主题的javascript覆盖

javascript - 覆盖Backbone.sync,但保存其以前的功能

javascript - Backbone.js Visual Studio设置

ios - 从Parse.com播放音频

javascript - 为什么在for循环中使用i <array.length

javascript - 如何使用jQuery / javascript在div内进行选择

javascript - 没有哈希就无法获得骨干网路由吗?

ios - 从解析类创建多个地图注释时出错