我正在开发应用,我需要对在某些时段注册的新用户进行一些更改。
我添加了一个我将手动更改的变量,并检查该值是真还是假。
这是我目前的代码:
Parse.Cloud.beforeSave(Parse.User, function(request, status)
{
console.log("********************************************");
Parse.Cloud.useMasterKey();
var special = true;
if(special)
{
request.object.set("points", 1000);
request.object.set("role/objectid", "PZHTquGti0");
}else{
request.object.set("points", 0);
request.object.set("role/objectid", "TQyjIY59oL");
}
console.log("********************************************");
status.success("Job finished successfully!");
}); // end of Parse.define
此代码错误输出" Uncaught Error:更改必须通过Parse.Object"并且我一直在查看文档以了解如何更改User对象的子类的值,但是没有找到。
此外,此代码也会在更新用户时运行,我不希望这样做。 任何帮助都非常感谢!
答案 0 :(得分:1)
首先,要在第一次保存(插入)时运行代码,您可以使用request.object.isNew()
由于role
列是一个指针,您应该设置一个对象&不是直接的id字符串。
因此,创建一个新的虚拟对象并为其分配id。
Parse.Cloud.beforeSave(Parse.User, function(request, status)
{
console.log("********************************************");
Parse.Cloud.useMasterKey();
if(request.object.isNew()){ // Object Insert
var Role = Parse.Object.extend("_Role");
var role = new Role();
var special = true;
if(special)
{
request.object.set("points", 1000);
role.id = "PZHTquGti0";
request.object.set("role", role);
}else{
request.object.set("points", 0);
role.id = "TQyjIY59oL";
request.object.set("role", role);
}
}
else{ // Object Update
//Do nothing
}
console.log("********************************************");
status.success("Job finished successfully!");
}); // end of Parse.define