我在名为admin的角色中添加用户的代码:
var Thisuser = Parse.User.current();
var rolequery= new Parse.Query(Parse.Role);
rolequery.equalTo("name","admin");
var Role = rolequery.find({
success: function(Role) {
alert("Successfully retrieved " + Role.length + " roles");
// this line shows that there is one element named "admin" by resulting "Role.length"=1
for (var i = 0; i < Role.length; i++) {
var object = Role[i];
alert(object.id + ' - ' + object.get('name'));
//outputs "admin",So till here code is right and working.
}
},
});
Role.getUsers().add(Thisuser); //here is something wrong..
答案 0 :(得分:0)
这一行:
var Role = rolequery.find({
将Parse.Promise分配给外部范围中的Role
变量。
由于异步代码的性质,下一行要执行的是以下行(不是内部成功函数):
Role.getUsers().add(Thisuser);
这当然失败了,因为Parse.Promise没有getUsers()
方法。
稍后当查询完成运行时,将调用内部成功函数,并为数组结果分配一个也称为Role
的范围变量。在该功能的范围内,您越来越接近您的期望。
注意:强>
似乎需要一些核心概念才能更好地理解,我建议您更多地了解“范围”和“异步编程”。
如果您了解更多有关命名标准,何时使用lowerCamelCase,UpperCamelCase和复数/单数名称,您还可以让自己的生活更轻松。