解析javascript SDK,无法在角色中添加用户

时间:2014-06-28 13:08:27

标签: javascript parse-platform

我在名为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..

1 个答案:

答案 0 :(得分:0)

这一行:

var Role = rolequery.find({

将Parse.Promise分配给外部范围中的Role变量。

由于异步代码的性质,下一行要执行的是以下行(不是内部成功函数):

Role.getUsers().add(Thisuser);

这当然失败了,因为Parse.Promise没有getUsers()方法。

稍后当查询完成运行时,将调用内部成功函数,并为数组结果分配一个也称为Role的范围变量。在该功能的范围内,您越来越接近您的期望。

注意:

似乎需要一些核心概念才能更好地理解,我建议您更多地了解“范围”和“异步编程”。

如果您了解更多有关命名标准,何时使用lowerCamelCase,UpperCamelCase和复数/单数名称,您还可以让自己的生活更轻松。