2017-02-03 4 views
0

Мы начали приложение с Parse и сталкивались с проблемами с момента его закрытия.Вызов user.destroy() фактически не удаляет запись базы данных

Уничтожая пользователя не работает в этой функции deleteUser

Parse.Cloud.define('deleteUser', function(request, response) { 
var objectId = request.params.objectId; 

if(!objectId || objectId.length === 0 || !objectId.trim()) { 
    response.error("The user object id is needed to perform this action."); 
} 

Parse.Cloud.useMasterKey(); 
var query = new Parse.Query(Parse.User); 
query.get(objectId, { 
    success: function(user) { 
    user.destroy(null, { 
     success: response.success(user), 
     error: function(user, error) { 
     response.error(error); 
     } 
    }); 
    }, 
    error: function(error) { 
    response.error("Could not find the user."); 
    } 
}); 
}); 

deleteEvent работает просто отлично, и я также пытался скопировать этот точный синтаксис deleteUser не повезло.

Parse.Cloud.define('deleteEvent', function(request, response) { 

var objectId = request.params.objectId; 

if(!objectId || objectId.length === 0 || !objectId.trim()) { 
    response.error('The event object id is needed to perform this action.'); 
    return; 
} 

Parse.Cloud.useMasterKey(); 
var query = new Parse.Query(Parse.Object.extend('Events')); 
query.get(objectId, { 
    success: function(event) { 
     event.destroy(); 
     response.success('Successfully deleted event.'); 
    }, 
    error: function(error) { 
     response.error('Could not find the event.'); 
    } 
}); 
}); 

Функция завершается вызовом успеха в журналах, но user.destroy() фактически никогда не удаляет пользователя.

I console.log все параметры, идентификаторы и аргументы, чтобы убедиться, что я получаю ожидаемое. Есть ли специальный способ удаления пользователей Parse?

Это неожиданно прекратило работу на прошлой неделе.

Я примерил Разбор v1.6.14 и v1.9.2

Заранее спасибо за помощь!

ответ

1

Как кто-то сказал, Parse.Cloud.useMasterKey() осуждается в синтаксическое-сервере. Теперь вам нужно указать флаг useMasterKey или передать sessionToken (олицетворять пользователя) методам доступа к БД (получить, сохранить, первыми, считать, ...). Таким образом, измените свой код соответствующим образом:

Parse.Cloud.define('deleteUser', function(request, response) { 
var objectId = request.params.objectId; 

if(!objectId || objectId.length === 0 || !objectId.trim()) { 
    response.error("The user object id is needed to perform this action."); 
} 

var query = new Parse.Query(Parse.User); 
query.get(objectId, { 
    useMasterKey: true, //HERE (1/2) 
    success: function(user) { 
    user.destroy({ 
     useMasterKey: true, //HERE (2/2) 
     success: response.success(user), 
     error: function(user, error) { 
     response.error(error); 
     } 
    }); 
    }, 
    error: function(error) { 
    response.error("Could not find the user."); 
    } 
}); 
}); 
+0

Я вижу, сладкий и простой причине. Спасибо, Cipi и Cliffordwh за вашу помощь! –

1

Это связано с тем, что Parse.Cloud.useMasterKey() устарел после версии Parse версии 2.3.0. Теперь вам нужно использовать useMasterKey: true при использовании таблицы users.

var query = new Parse.Query(Parse.User); 
     query.get({ useMasterKey: true }).then(.......) 
Смежные вопросы