当前位置: 首页 > news >正文

koa + sequelize做距离计算(MySql篇)

1.核心思路

1.利用sequelize的fn方法调用MySql原生函数(st_distance_sphere、point)

2.这里利用到了MySql的原生函数,不懂可以去看看mysql的函数知识

2.核心代码

//st_distance_sphere、point函数用来计算当前经纬度和目的地经纬度
//col为获取表头的字段名
//最后将计算完的值命名为"distance"
fn('st_distance_sphere' ,  fn('point', col('lng'), col('lat')) ,  fn('point', lng , lat)  )   , "distance" //示例
fn('st_distance_sphere' ,  fn('point', col('需要查询经度'), col('需要查询纬度')) ,  fn('point', 你的经度, 你的纬度)  )   , "distance" 

3.完整代码

const FindAll = async (ctx) => {try {const { pageNum, pageSize , lng , lat } = ctx.query;if (!pageNum && !pageSize) {return ctx.app.emit('error', parameterMissingError, ctx)}const res = await Works.findAndCountAll({raw: true,nest: true,attributes:{include:[// 原生函数计算距离[ fn('st_distance_sphere' ,  fn('point', col('lng'), col('lat')) ,  fn('point', lng , lat)  )   , "distance" ]]  },include: [{as: 'user',model: User,attributes: ['nickName']}],limit: pageSize * 1,offset: (pageNum - 1) * pageSize * 1,order: [//根据距离排序[ fn('st_distance_sphere' ,  fn('point', col('lng'), col('lat')) ,  fn('point', lng , lat)  ) , 'DESC' ]],})ctx.body = { code: 200, msg: '查询成功', data: res }} catch (err) {console.log(err)return ctx.app.emit('error', findError, ctx)}
}

4.效果展示

distance就是查询到的参数,需要用parseFloat((distance/1000).toFixed(2)) ; 转成km和保存两位小数


http://www.mrgr.cn/news/65113.html

相关文章:

  • 23.智能停车计费系统(基于springboot和vue的Java项目)
  • 语言模型的采样方法
  • ioc的优点
  • 什么是人工智能学习框架?——人工智能技术科普指南
  • FreeRTOS | 信号量(第十四天)
  • Vivo手机怎样才能投屏到别的安卓手机上去?
  • MyBatis-Plus条件构造器:构建安全、高效的数据库查询
  • 深入了解 Flutter 中的泛型:让代码更灵活更安全的关键
  • 6-4 重新加载GDT(1)
  • 2025四川省考职位表+新增考点15页。完整备考资料集!!!免费领取!
  • 嵌入式开发之刷新流
  • 51c大模型~合集10
  • Python毕业设计选题:基于Hadoop的租房数据分析系统的设计与实现
  • HTML5+css3(伪类,动态伪类,结构伪类,否定伪类,UI伪类,语言伪类,link,hover,active,visited,focus)
  • 基于AI大模型的图书推荐平台社区:NextRead
  • 3分钟认识API是什么
  • CCF PTA 编程培训师资认证真题-试题编号:20210701-1
  • torch维度1-》n ,k对k都是可以广播的
  • (undone) MIT6.S081 2023 一个月速通 (Day2: LAB1 Utilities)
  • 音频模型介绍
  • LM Head weights;ChatGPT-3词汇量:175,000;llama7b 词汇量,词嵌入维度:4096
  • 苍穹外卖 查询订单明细
  • 删除 git submodule
  • 软件测试--BUG篇
  • SAR_ADC介绍和建模
  • 长期缺乏技术规划的后果与应对策略