![](/img/trans.png)
[英]I can't call Accounts.findUserByEmail() server-side via Meteor.call
[英]How can I access server-side variables via Meteor.call()?
我认为在Meteor中定义存储有关系统信息的服务器端类是明智的。 所选用户应访问此信息。 它没有存储在MongoDB中,所以据我所知,我认为订阅和发布不是一个选择。
这是我的简化方法:
if(Meteor.isServer) {
serverVar = true; // could depend on server logic
}
Meteor.methods({
myMethod: function() {
if(serverVar) {
return "secret";
} else {
throw Error();
}
}
}
然后,在客户端上:
Meteor.call("myMethod", function(err, res) {
console.log(res);
}
不幸的是,我收到serverVar
的ReferenceError
。 在我看来,在定义serverVar
时使用Meteor.isServer
作为条件破坏了这一概念。 但是如何使用Meteor.methods
访问服务器端变量? 哪种方法可以解决我的问题? 非常感谢你!
更新:谢谢您的建议。 serverVar
可以是服务器上定义的任何内容,而不是Meteor.isServer
。 因此,我认为仅将客户端上的serverVar
定义为false不会解决我的问题。
var serverVar = false; // Pre-define serverVar
if(Meteor.isServer) {
serverVar = true; // could depend on server logic
}
Meteor.methods({
myMethod: function() {
if(serverVar) {
return "secret";
} else {
throw Error();
}
}
}
甚至
var serverVar = Meteor.isServer;
请注意这一点。 如果您打算构建可扩展的应用程序,则可能会遇到问题。 如果您的变量是非用户变量,那么它看起来应该是。 如果将变量设置为true并具有其他服务器,则不会影响其他服务器。
另一个问题是,如果服务器崩溃/重启,状态将重置
您可以将变量存储在集合中,这样做可能更好。 这没有任何问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.