【问题标题】:Calling user.destroy() doesn't actually delete database record调用 user.destroy() 实际上并没有删除数据库记录
【发布时间】:2017-02-03 03:40:49
【问题描述】:

我们使用 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() 从未真正删除用户。

我控制台记录所有参数、ID 和参数,以确保我得到预期的结果。是否有删除 Parse 用户的特殊方法?

上周突然停止工作。

我已经尝试过 Parse v1.6.14 和 v1.9.2

提前感谢您的帮助!

【问题讨论】:

    标签: javascript parse-platform destroy


    【解决方案1】:

    正如有人所说,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.");
      }
    });
    });
    

    【讨论】:

    • 我明白了,甜蜜而简单的理由。感谢 Cipi 和 Cliffordwh 的帮助!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 2014-11-23
      • 2011-10-16
      • 1970-01-01
      • 2020-05-03
      相关资源
      最近更新 更多