我有一个方法,我只希望管理员能够调用,但我也希望它在Meteor.onStartup()中运行。我怎么能这样做?
我添加了“isAdmin”:对于作为管理员的用户文档是true,并在方法的开头添加了if语句,只有管理员才能调用以检查该用户是否确实是管理员。 这很好用,除了我想在onStartup中调用这个方法,但由于在运行onStartup代码时没有用户,因此无法调用该方法。我怎么能绕过这个?
由于
答案 0 :(得分:2)
将您的共享代码(在方法和启动函数中运行)重构为一个单独的函数,并在两个地方使用它:
var sharedFunction = function() {
// do something
};
Meteor.methods({
"foo": function() {
if (Meteor.user().isAdmin) {
sharedFunction();
}
}
}
Meteor.startup(sharedFunction);
答案 1 :(得分:0)
您可以将公共代码重构为函数,并在检查用户的if语句中从您的方法中调用它,或者
您可以使用http://docs.meteor.com/#method_setUserId暂时将管理员用户设置为已登录,然后在通话结束后退出。
出于此目的,您可以创建一个名为system / maintenance等的帐户。