Разобрать javascript SDK, не удается добавить пользователя в роль

#javascript #parse-platform

#javascript #разбор-платформа

Вопрос:

Мой код для добавления пользователя в роль с именем 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. Пожалуйста, отформатируйте свой код в ваших вопросах для удобства чтения.

Ответ №1:

Эта строка:

 var Role = rolequery.find({
  

Назначает синтаксический анализ.Обещание Role переменной во внешней области.

Из-за природы асинхронного кода следующей выполняемой строкой является следующая строка (не внутренняя функция успеха):

 Role.getUsers().add(Thisuser);
  

Это, конечно, не удается, потому что синтаксический анализ.У Promise нет getUsers() метода.

Позже, когда запрос завершается, вызывается ваша внутренняя функция успеха, и также вызываемой переменной области Role действия присваиваются результаты массива. Внутри границ этой функции вы приближаетесь к тому, что ожидаете.

Примечание:

Похоже, есть некоторые основные концепции, которые вам нужно лучше понять, я бы посоветовал узнать больше о «области видимости» и «асинхронном программировании».

Вы также облегчите себе жизнь, если узнаете больше о стандартах именования, когда использовать нижний регистр, верхний регистр и имена во множественном числе / единственном числе.