express+mysql+vue,从零搭建一个商城管理系统16--收货地址(全国省市县名称和code列表)

提示:学习express,搭建管理系统

文章目录

  • 前言
  • 一、新建config/area.js
  • 二、新建models/address.js
  • 三、新建dao/address.js
  • 四、新建routes/address.js
  • 五、添加地址
  • 六、查询用户地址列表
  • 总结


前言

需求:主要学习express,所以先写service部分

一、新建config/area.js

内容太多,没办法粘贴,资源里自取

在这里插入图片描述

二、新建models/address.js

models/address.js

const { DataTypes } = require('sequelize');
const sequelize = require('../config/db');const AddressModel = sequelize.define('Address',{id: {type: DataTypes.INTEGER,autoIncrement: true,primaryKey: true},addressId:{type:DataTypes.STRING ,comment:'地址ID',},createId:{type:DataTypes.STRING ,comment:'创建人ID',},createName:{type:DataTypes.STRING ,comment:'创建人姓名',},provinceCode:{type:DataTypes.STRING ,comment:'省code',},provinceName:{type:DataTypes.STRING ,comment:'省',},cityCode:{type:DataTypes.STRING ,comment:'市code',},cityName:{type:DataTypes.STRING ,comment:'市',},areaCode:{type:DataTypes.STRING ,comment:'县code',},areaName:{type:DataTypes.STRING ,comment:'县',},fullAddress:{type:DataTypes.STRING(255),comment:'详细地址',},recipientName:{type:DataTypes.STRING ,comment:'收件人',},phone:{type:DataTypes.STRING(30),comment:'手机号码',},
},{tableName:'address'
});//无address表创建address表
AddressModel.sync();
module.exports = AddressModel;

在这里插入图片描述

三、新建dao/address.js

dao/address.js

const AddressModel = require('../models/address');
const md5 = require('md5');
const secretKey = 'longlongago';const errFun = (msg,code)=>{return {code:code||500,success:false,msg:msg||'操作失败'}
}
const sucFun = (data,msg)=>{return {code:200,success:true,msg:msg||'操作成功',data,}
}
const AddressDao = {//添加地址addAddress:async(data)=>{//生成addressIdconst addressId = md5(data.createdId+secretKey+new Date().getTime());//添加addresstry {const address = await AddressModel.create({...data,addressId});if(!address) errFun('添加地址失败!');return sucFun(address,'添加地址成功!')}catch(err){return errFun('添加失败');}},//获取用户地址列表queryAddressListByUserId:async(data)=>{//根据userId查询addresstry{const addressList = await AddressModel.findAll({createId:data.createId});if(addressList&&addressList.length>0)return sucFun(addressList,'查询用户地址列表成功');return errFun('查询用户地址列表失败');}catch(err){return errFun('查询失败');}},
}module.exports = AddressDao;

在这里插入图片描述

四、新建routes/address.js

const AddressDao = require('../dao/address');
const AREA = require('../config/area');
const AddressRoutes = (router)=>{//添加地址router.post('/address/addAddress',async (req,res)=>{const result = await AddressDao.addAddress(req.body);res.json(result);});//获取用户地址列表router.post('/address/queryAddressListByUserId',async (req,res)=>{const result = await AddressDao.queryAddressListByUserId(req.body);res.json(result);});//获取省市县router.get('/address/getPCA',async (req,res)=>{res.json(AREA);});
}
module.exports = AddressRoutes;

在这里插入图片描述

五、添加地址

url:http://localhost:1990/address/addAddress
params:{"createId":"9e14ebba3be0ae546374e8f5a49f9e80","createName":"long001","provinceCode":"110000","provinceName":"北京市","cityCode":"110100","cityName":"市辖区","areaCode":"110108","areaName":"海淀区","fullAddress":"西小口路xxxxxxxxxxxxx","recipientName":"zzz","phone":"1891193zzzz"
}
params:{"createId":"9e14ebba3be0ae546374e8f5a49f9e80","createName":"long001","provinceCode":"110000","provinceName":"北京市","cityCode":"110100","cityName":"市辖区","areaCode":"110108","areaName":"海淀区","fullAddress":"五道口路xxxxxxxxxxxxx","recipientName":"xxx","phone":"1891193xxxx",
}

在这里插入图片描述
在这里插入图片描述

六、查询用户地址列表

url:http://localhost:1990/address/queryAddressListByUserId
params:{"createId": "9e14ebba3be0ae546374e8f5a49f9e80"
}

在这里插入图片描述

总结

踩坑路漫漫长@~@

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Data访问Elasticsearch----脚本和运行时字段Scripted and runtime fields

Spring Data访问Elasticsearch----脚本和运行时字段Scripted and runtime fields 一、person 实体二、存储库接口三、service类四、脚本化字段Scripted fields五、运行时字段Runtime fields Spring Data Elasticsearch支持脚本(scripted)字段和运行时(runtime)字段。有关此方面…

浅谈大模型“幻觉”问题

大模型的幻觉大概来源于算法对于数据处理的混乱,它不像人类一样可以by the book,它没有一个权威的对照数据源。 什么是大模型幻觉 大模型的幻觉(Hallucination)是指当人工智能模型生成的内容与提供的源内容不符或没有意义的现象。…

SpringCloud Gateway工作流程

Spring Cloud Gateway的工作流程 具体的流程: 用户发送请求到网关 请求断言,用户请求到达网关后,由Gateway Handler Mapping(网关处理器映射)进行Predicates(断言),看一下哪一个符合…

windows docker

写在前面的废话 最近在学习riscv的软件相关内容,倒是有别人的sg2042机器可以通过ssh使用,但是用起来太不方便了,经常断掉,所以想着在自己的机器上跑一跑riscv的操作系统。最常见的有两种方法吧,第一个就是qemu&#xf…

数据库运行状况和性能监控工具

数据库监控是跟踪组织中数据库的可用性、安全性和性能的过程,它涉及通过跟踪各种关键指标来分析数据库的性能,确保数据库的正常运行并具有深入的可见性,并在出现潜在问题时触发即时警报,以采取主动措施来确保数据库的高可用性。 …

制定工业物联网战略? 成功的5个关键考虑因素

随着越来越多的公司争夺注意力和收入,成功和创造、建设和创新的压力也在增加,这导致了对工业物联网战略的更大需求。 随着越来越多的公司争夺注意力和收入,成功和创造、建设和创新的压力也在增加,这导致了对工业物联网战略的更大需…

Win11专业工作站版系统密钥

Windows 11 专业工作站版是 Windows 11 专业版的加强版本,专为满足高性能工作负载的需求而设计。它在专业版的基础上增加了以下功能: 更高的硬件支持: 支持多达 4 个 CPU 和 6 TB 内存,支持最新的服务器级处理器和图形卡。增强的存储性能: 支…

一招让你的Mac重获新生,CleanMyMac助你轻松清理无用垃圾!

一招让你的Mac重获新生,CleanMyMac助你轻松清理无用垃圾! 告别卡顿,让你的Mac跑得更快更稳! 在当今这个快节奏的生活中,我们的工作和生活早已离不开电脑。特别是对于Mac用户来说,一台轻巧、快捷、稳定的Mac…

java算法第28天 | 93.复原IP地址 78.子集 90.子集II

93.复原IP地址 思路: 这里startIndex为插入‘.’的位置,使用回溯法遍历所有插入的位置,直接在原始字符串上操作。要注意的是开闭区间的规定(这里我规定的是左闭右闭区间)。还要明确什么时候能return。 class Solution…

HTML中的常用标签用法总结(持续更新...)

&#x1f31f; 欢迎来到 我的博客&#xff01; &#x1f308; &#x1f4a1; 探索未知, 分享知识 !&#x1f4ab; 本文目录 1. 标题标签2. 段落标签3. 链接标签4. 列表标签5. 图像标签6. 表格标签 1. 标题标签 <h1>至<h6>用于定义标题。<h1>是最大的标题&am…

模型部署——RKNN模型量化精度分析及混合量化提高精度

模型部署——RKNN模型量化精度分析及混合量化提高精度&#xff08;附代码&#xff09;-CSDN博客 3.1 量化精度分析流程 计算不同情况下&#xff0c;同一层网络输入值的余弦距离&#xff0c;来近似的查看每一层精度损失的情况。具体量化精度分析的流程如下&#xff1a; 3.2 量…

ONNX @riscv+OpenKylin

安装onnxruntime-riscv 下载软件: git clone https://github.com/ucb-bar/onnxruntime-riscv apt install unzip cd onnxruntime-riscv && sh build.sh 报错... 改了g环境变量部分还是不行&#xff0c;放弃。 安装onnxruntime 使用这个库 git clone https://g…

数据结构大合集03——栈的相关函数运算算法

函数运算算法合集03 顺序栈的结构体顺序栈的基本运算的实现1. 初始化栈2. 销毁栈3. 判断栈是否为空4. 进栈5. 出栈6. 取栈顶元素 链栈的结构体链栈的基本运算的实现1. 初始化栈2. 销毁栈3. 判断是否为空4. 进栈5. 出栈6. 取栈顶元素 注&#xff1a; 本篇文章的概念合集 数据结构…

RocketMQ的重试机制

RocketMQ的重试机制是指:当消费者消费消息失败时,RocketMQ会在一定时间后重新将消息发送给消费者进行消费,以确保消息的可靠消费。 RocketMQ的重试机制主要体现在: 1.自动重试:Consumer在消费失败后,会在一定重试策略下定期重试消费失败的消息,直到成功或达到最大重试次数。 …

边缘检测-Tiny and Efficient Model for the Edge Detection Generalization

源代码: https://github.com/xavysp/TEED 论文地址&#xff1a;https://arxiv.org/pdf/2308.06468.pdf 大多数高级计算机视觉任务依赖于低级图像操作作为其初始过程。边缘检测、图像增强和超分辨率等操作为更高级的图像分析提供了基础。在这项工作中&#xff0c;我们考虑三个…

帮助读者掌握C语言编程基础知识的书籍

帮助读者掌握C语言编程的基础知识&#xff0c;了解如何将人工智能技术应用于自己的编程项目。 人工智能编程&#xff08;赋能C语言&#xff09; 作者&#xff1a; 黄箐、廖云燕、曾锦山、邢振昌 ISBN号&#xff1a; 9787302648796 出版日期&#xff1a; 2023-11-01 本书以C…

刷题DAY26 | LeetCode 39-组合总和 40-组合总和II 131-分割回文串

39 组合总和&#xff08;medium&#xff09; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates…

小程序绕过 sign 签名

之前看到了一篇文章【小程序绕过sign签名思路】之前在做小程序渗透时也遇到了这种情况&#xff0c;但是直接放弃测试了&#xff0c;发现这种思路后&#xff0c;又遇到了这种情况&#xff0c;记录下过程。 并没有漏洞分享&#xff0c;仅仅是把小程序也分享出来&#xff0c;方便…

什么是数组流

字节数组流 1.ByteArrayInputStream和ByteArrayOutputStream分别使用字节数组作为流的源和目标。 2.ByteArrayInputStream构造方法 •ByteArrayInputStream (byte[] buf) •ByteArrayInputStream (byte[] buf,int offset,int length) 3.ByteArrayInputStream常用方法 • public…

如何建立数字化招标采购(系统)评价体系?

前言 长期以来&#xff0c;采购的经济目标占据了主导地位&#xff0c;采购人、采购代理机构或出于“经济人”的本性&#xff0c;或迫于采购资金的限制&#xff0c;极易采购便宜的产品、工程和服务&#xff0c;而忽略了采购的价值。 有效的采购制度&#xff0c;不仅仅以控制成…