#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
действия присваиваются результаты массива. Внутри границ этой функции вы приближаетесь к тому, что ожидаете.
Примечание:
Похоже, есть некоторые основные концепции, которые вам нужно лучше понять, я бы посоветовал узнать больше о «области видимости» и «асинхронном программировании».
Вы также облегчите себе жизнь, если узнаете больше о стандартах именования, когда использовать нижний регистр, верхний регистр и имена во множественном числе / единственном числе.