javascript - 如何通过 Meteor.call() 访问服务器端变量?

标签 javascript meteor

我认为在 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/

相关文章:

javascript - 如何在不运行本地网络服务器的情况下将 HTML 发送到嵌入式 WebView?

javascript - 单击父 div 触发复选框提交?

javascript - Gmaps.js 路线与距离

javascript - 在 javascript 函数 (Meteor) 中创建 anchor 标记(超链接)

javascript - 如何在 Meteor 中使用用户 JSON 文件?

javascript - meteor 辅助变量去除重复的相邻空格

javascript - 如何将 js 插入到 Electron 应用程序中,例如 chrome 内容脚本

javascript - 如何将参数传递给 jQuery document.ready() 函数(jSTL、MVC、java)

linux - Meteor & mup - 在 Linux 服务器上

meteor - 如何使用 CloudFront 或任何其他 CDN 与 meteor 应用程序。