javascript - 在 Meteor Method 中,为什么 this.connection.clientAddress 未定义?

标签 javascript meteor

// on server
Meteor.methods({
  'getIP': function () {
    return this.connection.clientAddress;
  }
});

// on client
Meteor.startup(function() {
  Meteor.call('getIP', function (err, res) {
    console.log(res);  // returns undefined
  });
});

进一步挖掘,服务器上的“this.connection”似乎只有3个东西:id、close、onClose,但没有clientAddress。我错过了什么?

其他信息:

最佳答案

我正在使用 Meteor 0.9.3.1 并在 Meteor 方法中调用 this.connection.clientAddress 对我来说很有效。我将客户端 IP 地址作为字段存储在我正在使用的集合集中。

我确实遇到了一个问题,客户端尝试模拟调用并在模拟调用效果时抛出异常... this.connection is undefined 错误。但我注意到我的文档已使用正确的客户端 IP 地址正确存储。因此解决方法就是不要让客户端尝试模拟这一点。

在我的 Meteor 方法中,我刚刚添加了一个 Meteor.isServer 检查。如果客户端模拟客户端 IP 为 0.0.0.0 也没关系:

var ip = "0.0.0.0";

if(Meteor.isServer) {
    if(!this.connection.clientAddress)
       throw new Meteor.Error(403, "Server Error: You must be connected.");
    else
       ip = this.connection.clientAddress;
}

//  ...store document with ip...

一切都按预期进行。

关于javascript - 在 Meteor Method 中,为什么 this.connection.clientAddress 未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24032129/

相关文章:

javascript - 可以使用jQuery添加html5 'a'属性吗

php - 如何从自动填充随机数字的下拉菜单生成一组文本框?

javascript - io 未定义 -- HTML/Javascript-Meteor 应用程序

meteor - 如何将 Meteor 帐户创建限制为管理员?

javascript - Meteor:谷歌登录无法在 iPhone/iPad 上使用

Javascript:使用 DOM 和 join()

javascript - 如何使用 JavaScript 为另一个域设置 cookie?

javascript - 使用 JavaScript/Jquery 为点击导航添加标签?

javascript - 使用meteor 和 Aldeed 的 autoform 进行动态形式概括和删除

javascript - meteor .js : how to pass the data context of one helper to another helper?