我发现删除流星中的用户帐户的唯一方法(除了使用 mrt reset 清空数据库)是实际登录到该特定用户帐户,并从控制台中删除该帐户,使用:
Meteor.users.remove('the user id');
但是就像我说的那样,我需要以该特定用户的身份登录,并且无法找到使我能够从数据库中删除任何用户的解决方案。我确定它与权限或角色有关,但我不确定如何继续/什么是最佳解决方案/如何为特定用户设置管理角色,以便我可以删除不同的用户帐户。
我发现删除流星中的用户帐户的唯一方法(除了使用 mrt reset 清空数据库)是实际登录到该特定用户帐户,并从控制台中删除该帐户,使用:
Meteor.users.remove('the user id');
但是就像我说的那样,我需要以该特定用户的身份登录,并且无法找到使我能够从数据库中删除任何用户的解决方案。我确定它与权限或角色有关,但我不确定如何继续/什么是最佳解决方案/如何为特定用户设置管理角色,以便我可以删除不同的用户帐户。
你可以做
meteor mongo
或者
meteor mongo myapp.meteor.com
对于已部署的应用程序
然后
db.users.remove({_id:<user id>});
我不推荐它,但如果你想删除任何用户而不从流星登录,你需要修改允许规则。但是删除用户是一个非常不可能的事件,因此上述可能是最好的方法。
无论如何,如果您愿意,请修改该Meteor.users.allow({remove:function() { return true });
属性。请参阅http://docs.meteor.com/#allow。您可以在那里添加一些自定义逻辑,因此只有在您是管理员时才允许您这样做
我在 nitrous.io 上执行此操作时遇到了麻烦,因为我无法同时打开 Meteor 和 Mongo。我放:
Meteor.users.remove(' the _id of the user ');
在 isServer 部分删除用户。
如果有人仍在寻找这个问题的答案,我在下面概述了我的解决方案。
当我创建一个新用户时,我在我的用户文档中添加了一个名为角色的字段。如果我希望用户能够从Meteor.users
集合中删除其他用户,我给他一个角色administrator
. 如果没有,我给他一个角色member
。所以,我的用户文档看起来像这样 -
{
"_id" : ...,
"createdAt" : ...,
"services" : {...},
"username" : "test",
"profile" : {
"name" : "Test Name",
"role" : "administrator"
}
}
在客户端,我有一个用户列表(使用#each
模板标签添加),每个用户旁边都有一个删除按钮。用户必须登录才能查看此列表。我为删除按钮定义了一个事件处理程序 -
'click #remove-user-btn': function () {
Meteor.users.remove({ _id: this._id }, function (error, result) {
if (error) {
console.log("Error removing user: ", error);
} else {
console.log("Number of users removed: " + result);
}
})
}
但是,默认情况下,Meteor.users 不允许从客户端进行删除操作。因此,您必须编辑Meteor.users.allow
服务器中的回调,如下所示,以允许从客户端删除用户。但是我们需要确保只有具有管理员角色的用户才能获得此权限。
Meteor.users.allow({
remove: function (userId, doc) {
var currentUser, userRole;
currentUser = Meteor.users.findOne({ _id: userId }, { fields: { 'profile.role': 1 } });
userRole = currentUser.profile && currentUser.profile.role;
if (userRole === "administrator" && userId !== doc._id) {
console.log("Access granted. You are an administrator and you are not trying to delete your own document.");
return true;
} else {
console.log("Access denied. You are not an administrator or you are trying to delete your own document.");
return false;
}
},
fetch: []
});
这是一般的想法。您可以在此基础上满足您的需求。
以下是通过控制台从 mongo 删除用户的步骤:
第 1 步:打开新控制台
第 2 步:将目录更改为您的应用程序,例如 (cd myapp)
第 3 步:输入命令meteor mongo
第 4 步:确保存在一个名为 users 的表,db.users.find({});
第 5 步:找到您要删除的用户的用户 ID 并键入:
db.users.remove({_id:"nRXJCC9wTx5x6wSP2"}); // id should be within quotes