Javascript 解析JS添加具有角色的用户
我正在尝试基本上有一个注册表单,它将注册一个用户,并添加刚刚注册到certan角色的用户。我让应用程序注册了用户,但它没有创建角色并将用户添加到该角色中。这是我所拥有的Javascript 解析JS添加具有角色的用户,javascript,parse-platform,Javascript,Parse Platform,我正在尝试基本上有一个注册表单,它将注册一个用户,并添加刚刚注册到certan角色的用户。我让应用程序注册了用户,但它没有创建角色并将用户添加到该角色中。这是我所拥有的 <script type="text/javascript"> Parse.initialize("key", "key"); //set the user var user = new Parse.User(); $( "form" ).submit(function( eve
<script type="text/javascript">
Parse.initialize("key", "key");
//set the user
var user = new Parse.User();
$( "form" ).submit(function( event ) {
//get the input data
var username = $('#username').val();
var email = $('#email').val();
var password = $('#password').val();
var facility = $('#facility').val();
//Set the user info
user.set("facility", "" + facility + "");
user.set("username", "" + username + "");
user.set("email", "" + email + "");
user.set("password", "" + password + "");
//Sign them up
user.signUp(null, {
success: function(user) {
// Hooray! Let them use the app now.
//Make the role
var roleACL = new Parse.ACL();
roleACL.setPublicReadAccess(true);
var role = new Parse.Role("Pro", roleACL);
role.getUsers().add(username);
role.save();
//Show and Hide the alert
$('#successModal').modal('show');
setTimeout(function(){
$('#successModal').modal('hide')
}, 4000);
//Clear the form
$( 'form' ).each(function(){
this.reset();
});
},
error: function(user, error) {
// Show the error message somewhere and let the user try again.
alert("Error: " + error.code + " " + error.message);
}
});
return false
});
</script>
初始化(“key”,“key”);
//设置用户
var user=new Parse.user();
$(“表格”)。提交(功能(事件){
//获取输入数据
var username=$('#username').val();
var email=$('#email').val();
var password=$('#password').val();
var facility=$('#facility').val();
//设置用户信息
user.set(“facility”,“facility+”);
user.set(“用户名”,“用户名+”);
user.set(“电子邮件”,“电子邮件+”);
user.set(“密码”,“密码+”);
//报名
user.signUp(null{
成功:功能(用户){
//万岁!让他们现在就使用这个应用。
//扮演角色
var roleACL=new Parse.ACL();
RoleCal.setPublicReadAccess(真);
var role=newparse.role(“Pro”,roleACL);
role.getUsers().add(用户名);
role.save();
//显示和隐藏警报
$('successModal').modal('show');
setTimeout(函数(){
$('successModal').modal('hide'))
}, 4000);
//清除表格
$('form')。每个(函数(){
这是reset();
});
},
错误:函数(用户,错误){
//在某个地方显示错误消息,然后让用户重试。
警报(“错误:+Error.code+”“+Error.message”);
}
});
返回错误
});
我的想法是创建用户,然后在成功创建用户时创建角色并将用户添加到该角色中。但似乎不起作用
将查询编码为用户
querys a role
then adds the user to the role
var qu = new Parse.Query(Parse.User);
var qr = new Parse.Query(Parse.Role);
qr.get(roleId, {
success: function(role) {
_role = role;
qu.get(userId, {
success: function(user) {
_role.getACL().setRoleReadAccess(_role, true);
_role.getUsers().add(user);
_role.save();
response.success(_role.toJSON());
},
error: function(object, error) {
console.log('got role, failed on get user');
}
});
对查询用户的代码进行编码
querys a role
then adds the user to the role
var qu = new Parse.Query(Parse.User);
var qr = new Parse.Query(Parse.Role);
qr.get(roleId, {
success: function(role) {
_role = role;
qu.get(userId, {
success: function(user) {
_role.getACL().setRoleReadAccess(_role, true);
_role.getUsers().add(user);
_role.save();
response.success(_role.toJSON());
},
error: function(object, error) {
console.log('got role, failed on get user');
}
});
其目的是将新保存的用户添加到现有角色,以便在保存用户时必须查询角色,而不是创建角色 由于必须保存用户、查询角色并保存该角色(必须按顺序执行的三个异步操作),因此建议使用承诺,以免代码出现无法理解的缩进,因此
// prepare the user as you have it, then
user.signUp().then(function(user) {
// query the role, you can get it with the role name
var roleQuery = new Parse.Query(Parse.Role);
roleQuery.equalTo("name", "Pro");
return roleQuery.first();
}).then(function(role) {
role.getUsers().add(user);
return role.save();
}).then(function() {
// no need to set a timer. with the promise, we know exactly when we are done
$('#successModal').modal('hide');
}, function(error) {
alert("Error: " + error.code + " " + error.message);
});
请确保首先使用数据浏览器手动创建“Pro”角色。通读
另外请注意,如果每个用户都出现这种情况,那么角色代码是PFUser上
afterSave
云功能的一部分。目的是将新保存的用户添加到现有角色中,因此必须查询角色,而不是在保存用户时创建角色
由于必须保存用户、查询角色并保存该角色(必须按顺序执行的三个异步操作),因此建议使用承诺,以免代码出现无法理解的缩进,因此
// prepare the user as you have it, then
user.signUp().then(function(user) {
// query the role, you can get it with the role name
var roleQuery = new Parse.Query(Parse.Role);
roleQuery.equalTo("name", "Pro");
return roleQuery.first();
}).then(function(role) {
role.getUsers().add(user);
return role.save();
}).then(function() {
// no need to set a timer. with the promise, we know exactly when we are done
$('#successModal').modal('hide');
}, function(error) {
alert("Error: " + error.code + " " + error.message);
});
请确保首先使用数据浏览器手动创建“Pro”角色。通读
另外请注意,如果每个用户都出现这种情况,那么角色代码是PFUser上
afterSave
cloud功能的一部分。谢谢。我理解您在这里所经历的过程,但当我这样做时,我得到了一个错误:101未找到要更新的对象
。我创建了这个角色,这段代码实际上已经注册了用户,但是我得到了一个错误,一个jsPOSThttps://api.parse.com/1/classes/_Role/IwVmnoPJHx 404(未找到)
并且用户未连接到Core中的角色。因此,您可以在数据浏览器的_role表中看到名为“Pro”的角色吗?这应该通过简单查询的name列找到。“IwVmnoPJHx”是该角色对象的id吗?你能把它的图片粘贴到数据浏览器里吗,也许那里有线索。我在主要问题中添加了一些图片,我想现在似乎起作用了。我也不得不更改写作许可。谢谢。我理解您在这里所经历的过程,但当我这样做时,我得到了一个错误:101未找到要更新的对象
。我创建了这个角色,这段代码实际上已经注册了用户,但是我得到了一个错误,一个jsPOSThttps://api.parse.com/1/classes/_Role/IwVmnoPJHx 404(未找到)
并且用户未连接到Core中的角色。因此,您可以在数据浏览器的_role表中看到名为“Pro”的角色吗?这应该通过简单查询的name列找到。“IwVmnoPJHx”是该角色对象的id吗?你能把它的图片粘贴到数据浏览器里吗,也许那里有线索。我在主要问题中添加了一些图片,我想现在似乎起作用了。我也不得不改变写作许可。