三层架构

后端项目搭建的一种经典结构,将后端功能分为三块如下图
三层架构.jpg

路由层

根据你的请求地址来返回数据,就是提供数据接口

服务层

提供功能,比如用户登录

数据访问层

跟数据库或其他保存数据的文件打交道,sequelize就在数据访问层

项目示范结构为

image.png

拿添加修改删除管理员为例

项目目录

image.png

代码示例

  1. const Admin = require('../models/Admin');
  2. /**
  3. * 添加管理员
  4. * 业务逻辑举例
  5. * 账号名称不能重复
  6. * 判断数据库中是否有管理员,如果没有,自动添加一个默认管理员
  7. *
  8. * @param {*} obj
  9. */
  10. exports.addAdmin = async function (obj) {
  11. // 应该判断adminObj的各种属性是否合理,以及账号是否已存在
  12. /**第一种 */
  13. // // 1.得到实例 将模型就行修改
  14. // const ins = Admin.build(obj);
  15. // // 2. 保存 才会写入数据库
  16. // ins.save().then(() => {
  17. // console.log('success')
  18. // })
  19. /**第二种 */
  20. // 他会自己保存,无需手动保存
  21. const jace = await Admin.create(obj);
  22. console.log('success', jace);
  23. // 想要一个纯粹的对象
  24. return jace.toJSON();
  25. };
  26. /**
  27. * 删除管理员
  28. * @param {*} id
  29. * 业务逻辑举例
  30. * 能否把管理员删除,假如就剩一个管理员能否删除
  31. */
  32. exports.delAdmin = async function (id) {
  33. /**第一种 */
  34. // const ins = await Admin.findByPk(id)
  35. // if(ins) {
  36. // const res = await ins.destroy();
  37. // console.log('success', res)
  38. // }
  39. await Admin.destroy({
  40. where: {
  41. id,
  42. },
  43. }).then(() => {
  44. console.log('success');
  45. });
  46. };
  47. /**
  48. * 修改管理员
  49. * @param {*} id
  50. * @param {*} obj
  51. * 业务逻辑举例
  52. * 修改管理员只能修改密码不能修改账号
  53. */
  54. exports.updateAdmin = async function (id, obj) {
  55. // const ins = await Admin.findByPk(id)
  56. // if (ins) {
  57. // ins.loginId = obj.loginId;
  58. // }
  59. // ins.save().then(() => {
  60. // console.log('success')
  61. // })
  62. const res = await Admin.update(obj, {
  63. where: {
  64. id,
  65. },
  66. });
  67. console.log('success', res)
  68. };

验证

一个完整的系统,最重要的验证,一定在服务器。
三次验证

  • 客户端验证,客户端验证主要是为啦用户有一个体验
  • 服务器逻端辑验证:(业务逻辑层的验证):为了业务逻辑的完整性,安全性
  • 数据库验证: 为了保证数据完整性