我在运行Cloud代码中的某个功能时遇到问题。它应该检查对象的存在,如果它确实存在,创建一个新用户:无法将对象保存在云代码中
Parse.Cloud.define("createUser", function(request, response) {
// Query the existing company by id
var query = new Parse.Query(Parse.Object.extend("Company"));
query.equalTo("objectId", request.params.company.existing.id);
query.find().then(function(result){
var user = new Parse.User();
user.set("username", request.params.username);
user.set("password", request.params.username);
user.set("email", request.params.email);
user.set("permissions", ["User"]);
var company = result[0];
user.signUp(null, {
success: function(user){
// Asign company ACL for User write permission
var cACL = company.getACL();
cACL.setWriteAccess(user.id, true);
company.setACL(cACL);
// Save company
company.save();
console.log(company);
// Establish user-company relationship
var cRelation = user.relation("associated");
cRelation.add(company);
// Save user
user.save();
console.log(user);
// Finish
response.success(user);
},
error: function(user, error){
response.error(JSON.stringify({code: -8000, message: "User creation failed"}));
}
});
}, function(error){
response.error(JSON.stringify({code: -8001, message: "Invalid company"}));
});
});
我第一次查询解析所述对象的存在。如果确实存在,则使用收到的参数创建一个新用户。在用户创建的完成块中,我分配了适当的 ACL(到公司对象),并稍后保存它们。这是我遇到第一个问题时: ACL不保存(在仪表板中选中)。我公司为console.log
调试目的,它显示 ACL正确设置。所以我认为它必须是保存问题。
注意:用户已创建,但无论我以后尝试做什么都行不通。
后来我这个对象添加到先前在仪表板中定义的关系,但我有,同样的问题:关系不上来仪表板,即使当我console.log
对象就说明这种关系是正确的。
我迷失在这里。我不明白为什么这不起作用,我已经阅读了大量的在线文档,仍然无法找到答案。
对于任何在2017年阅读此文的人,我想提及'Parse.Cloud.useMasterKey()'已停用,并且您应该将'{useMasterKey:true}'作为选项传递给您希望运行的任何函数升高。 –