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

时间:2017-02-03 03:40:50

标签: javascript parse-platform destroy

我们用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

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

这是因为自Parse-server版本2.3.0以来不推荐使用Parse.Cloud.useMasterKey()。您现在需要在使用users表时使用useMasterKey: true

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

答案 1 :(得分:1)

正如有人所说,Parse.Cloud.useMasterKey()在parse-server中已被弃用。您现在需要指定useMasterKey标志,或者将sessionToken(模仿用户)传递给访问DB的方法(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.");
  }
});
});