如何删除Meteor中的登录用户

时间:2018-03-12 19:15:29

标签: javascript meteor

我在Meteor中开发应用程序,我想知道如何删除用户登录系统的帐户?我的意思是您可以删除您的帐户(如Tinder或Facebook),并且该应用程序会弹出您,因为您已经删除,并且您已不再存在。

只需一个简单的按钮"删除您的帐户"附接。

enter image description here

如果你能帮助我;我仍然是新手,我真的很感激,我尝试使用Meteor.userId()检索当前用户的ID,我正在通过以下方式创建方法:

Meteor.methods({
  SuprimirPersona: function(id) {
    var postId = Meteor.userId();
    const userId = this.userId;
    const p = Meteor.users.findOne(postId);
    if (userId && p === userId) {
      Meteor.users.remove({
          postId: this._id
        },
        function(error, result) {
          if (error) {
            console.log("Error removing user:", error);
          } else {
            console.log("users removed:" + result);
          }
        })
    }
  }
});

以下列方式调用方法,但它没有给出任何结果,我不明白为什么:

'click #Desactivarr': function() {
  var postId = Meteor.userId();
  Meteor.call('SuprimirPersona', userId, function(error, result) {
    if (error) {
      console.log("Somee Error");
    }
  });
  Meteor.logout(function() {
    FlowRouter.go('/');
  });
},

希望有人能帮助我!此致!

3 个答案:

答案 0 :(得分:0)

从用户的收藏中删除用户。您需要获取要删除的用户的用户标识。您可以通过在客户端上调用Meteor.userId()来获取用户的用户标识或服务器上的this.userId。您需要注销用户,并且在成功注销后,您可以将您使用的用户标识传递给meteor.users.remove(userId)

答案 1 :(得分:0)

您正在客户端和服务器端执行一些不必要的操作 - 比如多次获取相同的用户ID,甚至不将其传递到服务器端方法然后再次获取它。

我认为你要做的是获取发布内容的用户的id并将其传递到服务器端,在那里检查海报的id是否与当前用户的id相同。如果是,则删除用户,否则不会发生任何事情。

'click #desactivarr' : function() {
  var postID = <get the id of the user you want to delete here>;
  Meteor.call("suprimirPersona", postID, callbackfunc);
}

然后在服务器端它将是

Meteor.methods({
  suprimirPersona : function(postID) {
    var userID = Meteor.userId();
    if (userID && postID === userID) {
      Meteor.users.remove({ postId : userID })
    }
  }
});

Meteor.userId()和this.userId返回当前登录用户的id,该用户在客户端执行代码或向服务器端方法发出请求。

答案 2 :(得分:0)

我刚才在流星论坛上回答了这个问题: https://forums.meteor.com/t/how-to-remove-logged-in-user-in-meteor/42639/3

问题是您尝试通过postId而不是Users.remove({_ id:id})删除用户。你没有删除任何东西:)