调用 user.destroy() 实际上并没有删除数据库记录

Calling user.destroy() doesn't actually delete database record

我们使用 Parse 启动应用程序,但自从它关闭后一直遇到问题。

在此 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() 从未真正删除用户。

我 console.log 所有的参数、ID 和参数,以确保我得到预期的结果。有没有特殊的方法来删除 Parse 用户?

这上周突然停止工作。

我试过 Parse v1.6.14 和 v1.9.2

在此先感谢您的帮助!

这是因为 Parse.Cloud.useMasterKey() 自 Parse-server 版本 2.3.0 起已弃用。您现在需要在使用用户 table.

时使用 useMasterKey: true
   var query = new Parse.Query(Parse.User);
       query.get({ useMasterKey: true }).then(.......)

正如有人所说,Parse.Cloud.useMasterKey() 在 parse-server 中已弃用。您现在需要指定 useMasterKey 标志,或将 sessionToken(模拟用户)传递给访问数据库的方法(get、save、first、count...)。因此,相应地更改您的代码:

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.");
  }
});
});