Wu Jian Ping 743bbd204b .
2022-07-21 18:12:36 +08:00
..
.
2022-07-21 18:09:08 +08:00
2022-07-21 17:33:47 +08:00
.
2022-07-21 18:12:36 +08:00
.
2022-07-21 18:09:08 +08:00
.
2022-07-21 18:09:08 +08:00

ip2region nodejs 查询客户端实现

使用方式

完全基于文件的查询

// 导入包
const Searcher = require('.')
// 指定ip2region数据文件路径
const dbPath = 'ip2region.xdb file path'

try {
  // 创建searcher对象
  const searcher = Searcher.newWithFileOnly(dbPath)
  // 查询
  const data = await searcher.search('218.4.167.70')
  // data: '中国|0|江苏省|苏州市|电信'
} catch(e) {
  console.log(e)
}

缓存 VectorIndex 索引

// 导入包
const Searcher = require('.')
// 指定ip2region数据文件路径
const dbPath = 'ip2region.xdb file path'

try {
  // 同步读取vectorIndex
  const vectorIndex = Searcher.loadVectorIndexFromFile(dbPath)
  // 创建searcher对象
  const searcher = Searcher.newWithVectorIndex(dbPath, vectorIndex)
  // 查询 await 或 promise均可
  const data = await searcher.search('218.4.167.70')
  // data: '中国|0|江苏省|苏州市|电信'
} catch(e) {
  console.log(e)
}

缓存整个 xdb 数据

// 导入包
const Searcher = require('.')
// 指定ip2region数据文件路径
const dbPath = 'ip2region.xdb file path'

try {
  // 同步读取buffer
  const buffer = Searcher.loadContentFromFile(dbPath)
  // 创建searcher对象
  const searcher = Searcher.newWithVectorIndex(buffer)
  // 查询 await 或 promise均可
  const data = await searcher.search('218.4.167.70')
  // data: '中国|0|江苏省|苏州市|电信'
} catch(e) {
  console.log(e)
}

查询测试

bench 测试

单元测试结果

ip2region
  ✔ #newWithFileOnly#newWithVectorIndex#newWithBuffer

3 passing (10ms)

----------|---------|----------|---------|---------|----------------------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
----------|---------|----------|---------|---------|----------------------------------
All files |   91.17 |    60.71 |     100 |   91.17 |
 index.js |   91.17 |    60.71 |     100 |   91.17 | 56,70,80,137,143,173,179,193,201
----------|---------|----------|---------|---------|----------------------------------