【问题标题】:Parse cloud code unable to add relation解析云代码无法添加关系
【发布时间】:2014-07-31 08:48:00
【问题描述】:

我正在学习 Parse,有点卡在一个与将对象添加到关系列(两个相关类)相关的错误中。以下是代码。基本上,我的组织类通过称为管理员的关系字段与用户类相关。一个组织可以有多个管理员。 它可能没有优化我正在做的事情,所以请指导我。我首先检查是否存在传递的管理员和组织的 objectId。此功能不适用于一般用户,因此我可以传递 objectId。我不清楚这里有什么问题,但是如果我在添加之前和之后打印关系对象的内容,则调用后类名的值为 null。请告知我缺少什么或如何改进代码并修复它:)。 顺便说一句,我已经尝试了几天发布的许多解决方案,但到目前为止没有任何帮助,因此发布了新问题。 非常感谢。

Parse.Cloud.define("addAdminToOrganization", function(request, response)
{
    var queryAdmin = new Parse.Query("Users");
    var reqOrgId = request.params.organizationId;
    var reqAdminId = request.params.adminId;
    queryAdmin.equalTo("objectId", reqAdminId);
    queryAdmin.find( 
    {
        success: function(fetchedAdmin)
        {
            var reqOrgId = request.params.organizationId;
            var queryOrg = new Parse.Query("Organizations");
            queryOrg.equalTo("objectId",reqOrgId);
            var fetchedAdm = fetchedAdmin;
            queryOrg.get(reqOrgId, 
            {
                success: function(fetchOrg)
                {
                    var _fetchOrg = fetchOrg;
                    var adminRelation = fetchOrg.relation("admins");
                    Parse.Cloud.useMasterKey();
                    var reqAdmin = request.params.adminId;
                    adminRelation.add(reqAdmin);
                    _fetchOrg.save(null,
                    {
                        success:function() {
                            console.log("Admin added to Organization");
                            response.success("Admin:" + reqAdminID + " added to Organization:"+reqOrgId);
                            },
                        error:function(err) {
                            console.log("Error while adding admin to Organization, "+ err.message);
                            response.error("Unable to add Admin");
                            }
                    } );

                },
                 error: function(err){
                    console.log("Organization not found : " + err.code);
                    response.error("Organization not found.");
                    }
            });
        },
        error:function(err){
            console.log("Admin not found: " + err.code);
            response.error("Admin not found");
            }
    });
});

【问题讨论】:

    标签: parse-platform cloud add relation


    【解决方案1】:

    您的代码有几个问题:

    queryAdmin.equalTo("objectId", reqAdminId);
    queryAdmin.find( 
    {
        success: function(fetchedAdmin)
        {
    

    因为你做了一个find() fetchedAdmin 变量将是一个包含 0 个或多个元素的数组,如果你知道你只想要一条记录删除 equalTo() 并使用 get()

    奇怪的是,您似乎并没有实际使用 fetchedAdmin 或您将其复制到的变量 fetchedAdm

    queryOrg.equalTo("objectId",reqOrgId);
    queryOrg.get(reqOrgId, 
    

    equalTo() 调用是多余的,因为您已正确使用 get() 进行此查询。

    var reqAdmin = request.params.adminId;
    adminRelation.add(reqAdmin);
    

    在这里,您正在读取一个字符串 ID 并尝试将其添加到关系中,您需要创建一个指针,或使用您检索到的管理对象(如果您确实得到了一个正确的对象)。

    您的代码简化如下:

    Parse.Cloud.define("addAdminToOrganization", function(request, response)
    {
        Parse.Cloud.useMasterKey();
        var reqOrgId = request.params.organizationId;
        var reqAdminId = request.params.adminId;
    
        var queryAdmin = new Parse.Query("Users");
        queryAdmin.get(reqAdminId, 
        {
            success: function(fetchedAdmin)
            {
                var queryOrg = new Parse.Query("Organizations");
                queryOrg.get(reqOrgId, 
                {
                    success: function(fetchedOrg)
                    {
                        var adminRelation = fetchedOrg.relation("admins");
                        adminRelation.add(fetchedAdmin);
                        fetchedOrg.save(null,
                        {
                            success:function() {
                                console.log("Admin added to Organization");
                                response.success("Admin:" + reqAdminID + " added to Organization:"+reqOrgId);
                                },
                            error:function(err) {
                                console.log("Error while adding admin to Organization, "+ err.message);
                                response.error("Unable to add Admin");
                                }
                        } );
    
                    },
                     error: function(err){
                        console.log("Organization not found : " + err.code);
                        response.error("Organization not found.");
                        }
                });
            },
            error:function(err){
                console.log("Admin not found: " + err.code);
                response.error("Admin not found");
                }
        });
    });
    

    【讨论】:

    • 太棒了,非常感谢蒂莫西,详细的解释和您宝贵的时间回复,它现在正在工作:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多