使用Nodejs、Express和AngularJS在浏览器中显示IP

2024-05-22

我正在学习 Nodejs 和 ExpressJS。我正在尝试使用 ExpressJS 和 2 个节点模块(请求IP https://www.npmjs.com/package/request-ip and geoip2 https://www.npmjs.com/package/geoip2) 获取用于地理定位的客户端 IP 地址,然后使用 AngularJS (1.x) 在浏览器中输出地理位置。

到目前为止,我的 Nodejs 和 Expressjs 代码

    var express = require('express');
// require request-ip and register it as middleware
var requestIp = require('request-ip');
// to convert the ip into geolocation coords
var geoip2 = require('geoip2');

// Init app
var app = express();
var port = process.env.PORT || 8000;

geoip2.init(); // init the db

//app.use(requestIp.mw({ attributeName: 'myCustomAttributeName'}));
var ip = '207.97.227.239';//67.183.57.64, 207.97.227.239

// respond to homepage req
app.get('/', function (req, res, next) {
    //var ip = req.myCustomAttributeName;// use this for live
    //var ip = '207.97.227.239';/* use this for testing */
    console.log('requestIP is ' + ip);
    next();
    // geolocation
    geoip2.lookupSimple(ip, function(error, result) {
      if (error) {
        console.log("Error: %s", error);
      }
      else if (result) {
        console.log(result);//ipType was causing console.log duplication, IDK why
      }
    });
});

// set static folder
app.use('/', express.static(__dirname + '/public'));

app.listen(port, function(){
    console.log('user location app is running');
});

对于 Angular 我有

angular.module('UserLocation', []);

angular.module('UserLocation')
    .controller('MainController', MainController);

MainController.$inject = ['$http'];

function MainController($http) {
    var vm = this;
    vm.result = '';

    vm.message = 'Hello World';
    vm.getLocation = function() {
        console.log();
        return $http.get('localhost:8000', {
        params: {result: result}
      })
      .then(function(result){
        console.log(result);
        })
      }; 
    };

vm.resultAngular 控制器中的 是用于执行地理定位的 geoip2 Node 模块的结果。

我可以得到result在控制台中没问题,但我不确定如何将其传递给 Angular。我正在使用$http服务,但我不知道从这里去哪里......?

我该如何通过result使用 $http 从 geoip2 Node 模块到我的 Angular 控制器?


问题是你还没完成就打电话给下一个。

app.get('/', function (req, res, next) {
    //next(); this line should be commented
    // geolocation
    geoip2.lookupSimple(ip, function(error, result) {
      if (error) 
        return res.status(400).json({error: 'Something happened'});

      return res.send(result);
    });
});

然后在角度上

$http({
  method: 'GET',
  url: '/yourURL'
}).then(function (response) {
  console.log(response);
});

如果你想使用用户IP来获取位置:

app.get('/', function (req, res, next) {
    //next(); this line should be commented
    // geolocation

    var ip = req.headers['x-forwarded-for'] || 
     req.connection.remoteAddress || 
     req.socket.remoteAddress ||
     req.connection.socket.remoteAddress;

    geoip2.lookupSimple(ip, function(error, result) {
      if (error) 
        return res.status(400).json({error: 'Something happened'});

      return res.send(result);
    });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Nodejs、Express和AngularJS在浏览器中显示IP 的相关文章

随机推荐

  • 对 numpy 数组中存在的元组中的列进行切片

    我已将一个文本文件导入到 numpy 数组中 如下所示 data np genfromtxt f dtype None delimiter names None 其中 f 包含我的 csv 文件的路径 现在数据包含以下内容 array 53
  • 安装 libjpeg v8 到 /opt/local

    如何在 OSX 上将 libjpeg 8 安装到 opt local 我问的原因是我想用以下方法制作大脑活动的小电影MNE C 库 http www nmr mgh harvard edu martinos userInfo data MN
  • 使用 PyArg_ParseTuple 解析用户定义类型

    如何使用解析用户定义的类型 或现有非标准库中的类型 PyArg ParseTuple 而不是使用普通的O格式 正如 Martijn 建议的那样 我通常更喜欢使用 它允许您传递一个函数 该函数将被调用以转换任何PyObject 到任意 C 双
  • 测试后 NUnit 回滚

    我对 NUnit 以及一般的自动化测试 还很陌生 我最近做了一些 Ruby On Rails 工作 并注意到在我的测试套件中 当我创建对象 例如新用户 并在套件过程中提交它们时 它们永远不会提交到数据库 以便我可以运行一遍又一遍地测试 不用
  • asp.net datalist 选择每个类别的所有复选框

    我有一个页面 用户可以在数据列表控件中选择不同的文档文件 使用预渲染事件处理程序根据类别对文档进行分类 文档是根据复选框控件 而不是复选框列表 选择的 到目前为止 一切都很好 接下来我想要发生的事情是在每个类别名称旁边放置一个 全选 复选框
  • Java异常处理——捕获超类异常

    我有一个关于处理网络应用程序异常的问题 我经常听说捕获超类 Exception 是一个坏主意 我经常编写代码来捕获 struts action java servlet 类中的所有异常 try call business facade bu
  • Angular核心模块的作用是什么?

    我读了一篇article https medium com michelestieven organizing angular applications f0510761d65a关于在 Angular 中组织文件夹 作者使用了一个名为cor
  • 在 php 标头中使用 x-auth-token 发送请求

    如何将 x auth token 参数发送到带有 YII 标头的服务器 我有这个代码 data array customerId gt userId getdata http build query data options array h
  • 关于Braintree支付网关与Java的集成

    我是支付网关集成的新手 我需要集成Braintree Payment Gateway与 JSF 应用程序 有人可以向我展示 java 类的基本示例和示例支付页面吗 我看到一些客户端Token如何生成它 我编写了一个示例类和页面 如下所示 但
  • 使用 XSL 1.0 有条件地包装内容

    我正在寻找一种用 xsl 包装内容的方法 这是我正在做的事情的简化示例 Lot s of content 是大量内容 锚标记仅用作示例 它可以是一个 div 或其他任何东西 XML
  • Swift - UICollectionView 重复(重复)单元格

    你好 我有一个数组 其中包含从 flickr 获取的 100 张图片 url 当我使用 UICollectionView 时 我显示 100 个单元格 屏幕上只有 8 个单元格 当我向下滚动查看下一个 8 个单元格时 它们与前一个单元格相同
  • AJAX 是如何工作的?

    AJAX的本质是什么 例如 我想在我的页面上有一个链接 这样当用户单击此链接时 一些信息就会发送到我的服务器 而无需重新加载当前页面 那是阿贾克斯吗 我能够通过使用 isoframe 来实现这种行为 更详细地说 我在一个小 isoframe
  • Android 应用程序因 Firebase 电话身份验证而崩溃

    我正在使用 firebase 进行电话号码身份验证 当我使用我的电话号码时 它会自动验证它 但是当我使用另一个电话号码时 我得到类转换异常 它说 getGoogleApiForMethod 返回 Gms stackoverflow上也有类似
  • 如何创建具有不同“产品模块名称”和“产品名称”的项目并将其模块导入另一个项目?

    我尝试执行问题中描述的任务但失败了 重现步骤 Create new workspace WS Create new Cocoa Touch Framework set Product Name Product in Choose optio
  • 无法连接到 SMTP 服务器

    我有一个支持邮件的服务器 比如说example com 我配置了服务器并通过cpanel添加了MX记录 这样我就可以通过outlook com有地址 email protected cdn cgi l email protection MX
  • KDoc:插入代码片段

    如何在 Kotlin 的默认文档工具 KDoc 中插入代码片段 在 Java 中 我可以使用以下内容 Example usage pre code 64 JavaAnnotation public void foo Code code pr
  • Material-ui :从主题中提取颜色

    我想使用我的颜色material ui像这样的组件内的主题 const MyComponent props gt
  • Android:如何在多语言资源中重用字符串

    自从我的第一个 Android 项目以来 这个问题一直困扰着我 考虑以 en 作为默认值的多语言字符串资源 res values strings xml lt The default language en res values de st
  • 滚动或滑动窗口迭代器?

    我需要一个可在序列 迭代器 生成器上迭代的滚动窗口 又名滑动窗口 默认的 Python 迭代可以被视为一种特殊情况 其中窗口长度为 1 我当前正在使用以下代码 我怎样才能更优雅和 或更有效地做到这一点 def rolling window
  • 使用Nodejs、Express和AngularJS在浏览器中显示IP

    我正在学习 Nodejs 和 ExpressJS 我正在尝试使用 ExpressJS 和 2 个节点模块 请求IP https www npmjs com package request ip and geoip2 https www np