Parse platform 解析云代码无法添加关系
我正在学习解析,有点困在一个bug中,这个bug与将对象添加到关系列(两个相关的类)有关。下面是代码。基本上,我的组织类通过一个名为admins的关系字段与users类相关联。一个组织可以有许多管理员。 这可能不是我正在做的优化,所以请指导我。我首先检查是否存在已传递的管理员和组织的objectId。此函数不适用于一般用户,因此我可以传递objectId。我不清楚这里出了什么问题,但若我在添加之前和之后打印关系对象的内容,那个么在after调用中className的值是null。请告知我遗漏了什么,或者我如何改进代码并修复它:)。 顺便说一句,我已经尝试了几天发布的许多解决方案,但到目前为止都没有效果,因此发布了新的问题。 非常感谢Parse platform 解析云代码无法添加关系,parse-platform,cloud,add,relation,Parse Platform,Cloud,Add,Relation,我正在学习解析,有点困在一个bug中,这个bug与将对象添加到关系列(两个相关的类)有关。下面是代码。基本上,我的组织类通过一个名为admins的关系字段与users类相关联。一个组织可以有许多管理员。 这可能不是我正在做的优化,所以请指导我。我首先检查是否存在已传递的管理员和组织的objectId。此函数不适用于一般用户,因此我可以传递objectId。我不清楚这里出了什么问题,但若我在添加之前和之后打印关系对象的内容,那个么在after调用中className的值是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");
}
});
});
您的代码有几个问题:
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");
}
});
});
您的代码有几个问题:
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");
}
});
});
太棒了,非常感谢Timothy,感谢您的详细解释,感谢您宝贵的时间回复,它正在工作:-)太棒了,非常感谢Timothy,感谢您的详细解释,感谢您宝贵的时间回复,它正在工作:-)