Parse platform Can';无法在云代码中保存对象
在云代码中运行函数时出现问题。它应该检查对象是否存在,如果确实存在,则创建一个新用户:Parse platform Can';无法在云代码中保存对象,parse-platform,parse-cloud-code,Parse Platform,Parse Cloud Code,在云代码中运行函数时出现问题。它应该检查对象是否存在,如果确实存在,则创建一个新用户: 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
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(在仪表板中选中)。Iconsole.log
公司进行调试,显示ACL设置正确。因此,我认为这一定是一个保存问题。
注意:用户已创建,但我以后尝试执行的任何操作都无效。
稍后,我将此对象添加到以前在仪表板中定义的关系中,但我有相同的问题:仪表板中不会出现关系,即使当我
console.log
对象时,它显示关系已正确设置。
我在这里迷路了。我不明白为什么这不起作用,我已经阅读了大量的在线文档,仍然找不到答案。好的,经过一天的工作,我终于发现了我的问题。我在任何地方都设置了ACL,我没有保存试图保存的对象的特权所以储蓄确实失败了 我应该注意,如果您遇到与我相同的问题,您可以使用主键轻松解决。为此,您需要在执行任何必须经过身份验证的请求之前调用
Parse.Cloud.useMasterKey()
这只适用于云代码,当您使用主密钥时,您应该明确知道自己在做什么,因为它基本上为任何人、任何地方、任何事情提供读写权限。因此,请确保您的逻辑是完美的,因为如果不明智地使用它,您可能会遇到严重的安全问题。正如本叔叔所说:权力越大,责任越大
希望这对其他人有所帮助。对于2017年阅读本文的任何人,我想提及的是,
Parse.Cloud.useMasterKey()
已停止,您应该将{useMasterKey:true}
作为您希望运行的任何函数的选项。