ZY.Node.Mongodb

项目介绍


  • 基于 Node.js、Express.js 和 MongoDB 通过Mongoose驱动进行 REST API 开发的轻量级样板。

    集成了Swagger UI、JWT、session、发送邮箱验证、日志管理、统一的预定义状态码响应格式等,对于为前端平台构建纯净的Web API非常有用。

  • 该项目我尝试做出轻松维护代码结构的项目样板,因为任何初学者也可以采用该流程并开始构建API。

  • 项目开放,可以提出建议、错误的issues。

项目特点


  • 轻量级Node.js项目提供Restful API
  • 数据库采用 Mongodb, 通过Mongoose驱动。
  • CRUD操作示例
  • 跨域处理
  • 日志管理
  • 具有恰当的状态代码的预定义响应结构
  • 全局错误处理
  • 增加express-validator请求参数校验
  • jwt验证 用户权限中间件分离
  • 基本身份验证(采用bcrypt单向Hash加密算法加密密码进行注册/登录)
  • Token生成和校验请求头的authorization
  • 集成swagger-ui
  • 增加邮件验证码通知
  • session 验证码校验
  • 采用jest 接口单元测试

如何获得并运行项目:


首先确保您系统中安装了Mongodb,和Nodejs,一起准备完善之后。按照如下操作。

有的同学启动会报错可能是依赖包的版本问题需要注意

我的环境配置供参考

  • Node.js 14.18.1+
  • MongoDB 5.1+

1,clone代码

git clone https://gitee.com/Z568_568/node.mongodb.git

2,安装依赖

npm install

3,启动程序

开发环境:npm run dev 基于 nodemon 热更新

生产环境:npm run start

4,启动成功示例

如何增加新的model


只需在 /models/v1/mapping/ 中创建一个新文件,

然后在控制器/controllers/v1/中创建一个对应新模型的新控制器的并使用。

如何增加新的路由router


只需在 /routes/v1/ 中创建一个新文件,并且引入它对应的controllers进行使用,routes下面的文件 将被 mount-routes插件自动解析并以文件名作为api根路径,

开发环境下会打印在终端上:

如何增加新的控制器


只需在 /controllers/v1/ 中创建一个新文件即可,并且引入相关模型进行使用

如何理解内置的登录注册逻辑


/*
* TODO: 注册登录大概逻辑:
* 1.用户注册 - 用户信息入库 - 发送验证码 - 校验验证码
* |
* 验证码发送失败、验证码失效或者校验失败 - 重新发送或输入验证码 - 校验验证码
* *
* 2.用户登录 -(账号、密码、验证状态都校验通过)- 发Token
* |
* 验证状态不通过 - 重新校验验证码/重发验证码 - 校验验证码 - 发Token
* */

项目结构


.
├── app.js //入口文件
├── package.json //依赖配置文件
├── .env.development //开发环境配置
├── .env.production //生产环境配置
├── config //项目配置
│ ├── db.config.js
│ ├── swagger.config.js
│ └── ...
├── controllers //控制模块(业务处理)
│ └── v1
│ ├── UserController.js
│ └── ...
├── models //模型模块(建表)
│ └── v1
│ ├── user.test.js /模型统一导出
│ └── mapping
│ ├──UserModel.js
│ └── ...
├── routes //路由(配置实际API地址路径)
│ └── v1
│ ├── user.test.js
│ ├── user.js
│ └── ...
├── db //mongodb数据库连接
│ ├── user.test.js
│ └── ...
├── middlewares //中间件
│ ├── jwt.js
│ ├── permissions.js
│ ├── session.js
│ └── ...
├── logs //日志
│ ├── info.log
│ ├── error.log
│ └── ...
└── utils //辅助工具
├── utils.apiResponse.js
├── utils.mailer.js.js
└── ...

关于作者


创建和维护由

开发轻量级REST API样板 基于Node.js、MongoDB 通过Mongoose驱动的更多相关文章

  1. KoaHub平台基于Node.js开发的Koa 连接支付宝插件代码信息详情

    KoaHub平台基于Node.js开发的Koa 链接支付宝插件代码信息详情 easy-alipay alipay payment & notification APIs easy-alipay ...

  2. 认识Web前端、Web后端、桌面app和移动app新开发模式 - 基于Node.js环境和VS Code工具

    认识Web.桌面和移动app新开发模式 - 基于Node.js环境和VS Code工具 一.开发环境的搭建(基于win10) 1.安装node.js和npm 到node.js官网下载安装包(包含npm ...

  3. 基于node.js 的 websocket的移动端H5直播开发

    这一篇介绍一下基于node.js 的 websocket的移动端H5直播开发, 下载文章底部的源码,我是用vscode打开, 首先在第一个终端运行 npm run http-server 这个指令是运 ...

  4. koa : Express出品的下一代基于Node.js的web框架

    https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501579966a ...

  5. 基于node.js人脸识别之人脸对比

    基于node.js人脸识别之人脸对比 Node.js简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O ...

  6. NodeBB – 基于 Node.js 的开源论坛系统

    NodeBB 是一个更好的论坛平台,专门为现代网络打造.它是免费的,易于使用. NodeBB 论坛软件是基于 Node.js 开发,支持 Redis 或 MongoDB 的数据库.它利用 Web So ...

  7. 基于 Node.js 平台,快速、开放、极简的 web 开发框架。

    资料地址:http://www.expressjs.com.cn/ Express 基于 Node.js 平台,快速.开放.极简的 web 开发框架. $ npm install express -- ...

  8. Fenix – 基于 Node.js 的桌面静态 Web 服务器

    Fenix 是一个提供给开发人员使用的简单的桌面静态 Web 服务器,基于 Node.js 开发.您可以同时在上面运行任意数量的项目,特别适合前端开发人员使用. 您可以通过免费的 Node.js 控制 ...

  9. 《Node.js+MongoDB+AngularJS Web开发》读书笔记及联想

    总体介绍 <Node.js+MongoDB+AngularJS Web开发>,于2015年6月出版,是一本翻译过来的书,原书名为<Node.js,MongoDB and Angula ...

  10. 基于Node.js + jade + Mongoose 模仿gokk.tv

    原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 关于gokk 大学的娱乐活动基本就是在寝室看电影了→_→,一般都会选择去goxiazai.cc上看,里面的资源多,质量高 ...

随机推荐

  1. datetime 获取当前时间的各种格式(转)

    我们可以通过使用DataTime这个类来获取当前的时间.通过调用类中的各种方法我们可以获取不同的时间:如:日期(2008-09-04).时间(12:12:12).日期+时间(2008-09-04 12 ...

  2. 2.5基本算法之搜索 156:LETTERS

    #include<iostream>#include<cstdio>using namespace std;char a[21][21];bool b[26]; int X[4 ...

  3. pg_dump导出表时正则匹配多个表,pg_dump导出表

    报错信息:pg_dump: 错误: 没有找到符合的表 报错语句:C:\Users\Admin>pg_dump -h172.16.3.159 -p5432 -dchisapp -nmchs -Um ...

  4. 鲁迅文集 第3卷 而已集 华盖集续编 华盖集 热风\四十一.md

    目录 导读 正文 导读 本篇首次发表于1919年1月15日<新青年>第六卷第一号.署名唐俟.   文章以生物进化的事实,驳斥旧势力对改革者的嘲讽,号召青年蔑视反改革者的冷笑和暗箭,&quo ...

  5. Matlab %补充---用的多的函数

    Input  promat = 'This is a sentence.' x = input(prompt) %显示prompt中的文本并等待用户输入数值或者表达式后按Return %如果用户什么都 ...

  6. Python subnet 操作物件

    subnetcalc.py class SubnetCalc(object): def __init__(self, network, mask): self.network = network.sp ...

  7. c语言动态数组

    动态数组根据用户的需要开创空间 避免造成空间的浪费 #include<stdio.h> #include<stdlib.h> typedef struct { int *par ...

  8. python 调试 qml

    1.设置pycharm的parameters -qmljsdebugger=port:10002,block 2.python 启动调试: 点击debug按钮 3.设置qt creater qt cr ...

  9. cenos7配置epel源

    1.首先进入/etc/yum.repos.d/目录下,新建一个repo_bak目录,用于保存系统中原来的repo文件 [root@bogon ~]# cd /etc/yum.repos.d/ [roo ...

  10. Identityserver4 ClientCredentials授权

    转自:https://www.cnblogs.com/hyqq/p/14138024.html:侵删. Client Credentials 客户端应用不代表用户,客户端应用本身就相当于资源所有者 通 ...