我认为在 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);
}
不幸的是,我收到一个ReferenceError
,表示serverVar
未定义。在我看来,在定义 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;
关于javascript - 如何通过 Meteor.call() 访问服务器端变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20387665/