nodejs+mongodb+express API快速生成

使用说明

安装

$ npm install duzq-quick-mongo

建立mongodb数据模型

const mongoose = require("../utils/mongodb")
const dayjs = require("dayjs") // User模型
const UserSchema = new mongoose.Schema({
id:{type:String, default: dayjs().unix()},
name:String,
pwd:{type: String,required:true,
set(val){ // 密码加密
return require("bcrypt").hashSync(val,10)
}},
mobile:{type: String, required:true},
createTime:String,
updateTime:String,
},{
timestamps: { createdAt: 'createTime', updatedAt: 'updateTime' }
})
const User = mongoose.model("User",UserSchema)
// export
module.exports = User;

初始化控制器

const {Controller} = require("duzq-quick-mongo")
const user = new Controller( require("../models/User"))

添加路由

router.post("/add", user.add)
router.post("/getItem", user.getItem)
router.post("/delete", user.delete)
router.post("/update", user.update)
router.post("/list", user.list)
router.post("/search", user.search)

恭喜你。

实现了User模块的增删改查的功能。

接口使用

添加数据

请求参数

{
"name": "dzq",
"mobile": "13800138000",
"pwd": "123456"
}

返回结果

{
"code": 200,
"msg": "success",
"data": {
"id": "1608954581",
"_id": "5fe6b2f1eb030db3f5d4c1bd",
"name": "dzq",
"mobile": "13800138000",
"pwd": "$2b$10$VMgVXPNSI7TuHtIYo0vY0ufi6PgsCEc.sv1VkSl0KKkd9Hv3u4gOO",
"createTime": "Sat Dec 26 2020 11:50:10 GMT+0800 (China Standard Time)",
"updateTime": "Sat Dec 26 2020 11:50:10 GMT+0800 (China Standard Time)",
"__v": 0
}
}

获取数据

请求参数

{
"id": "1608954581"
}

返回结果

{
"code": 200,
"msg": "success",
"data": {
"id": "1608954581",
"_id": "5fe6b2f1eb030db3f5d4c1bd",
"name": "dzq",
"mobile": "13800138000",
"pwd": "$2b$10$VMgVXPNSI7TuHtIYo0vY0ufi6PgsCEc.sv1VkSl0KKkd9Hv3u4gOO",
"createTime": "Sat Dec 26 2020 11:50:10 GMT+0800 (China Standard Time)",
"updateTime": "Sat Dec 26 2020 11:50:10 GMT+0800 (China Standard Time)",
"__v": 0
}
}

删除数据

请求参数

{
"id": "1608954581"
}

返回结果

{
"code": 200,
"msg": "success",
"data": {
"id": "1608954581",
"_id": "5fe6b2f1eb030db3f5d4c1bd",
"name": "dzq",
"mobile": "13800138000",
"pwd": "$2b$10$VMgVXPNSI7TuHtIYo0vY0ufi6PgsCEc.sv1VkSl0KKkd9Hv3u4gOO",
"createTime": "Sat Dec 26 2020 11:50:10 GMT+0800 (China Standard Time)",
"updateTime": "Sat Dec 26 2020 11:50:10 GMT+0800 (China Standard Time)",
"__v": 0
}
}

错误结果

{
"code": 301,
"msg": "failed"
}

更新数据

请求参数

{
"id": "1608954581",
"updateData": {
"mobile": 13800138099,
"pwd": "666666"
}
}

获取数据列表

请求参数

{
"pageSize": 10,
"page": 1
}

返回结果

{
"code": 200,
"msg": "success",
"data": {
"pageSize": 10,
"page": 1,
"total": 1,
"data": [
{
"id": "1608954581",
"name": "dzq",
"mobile": "13800138000",
"pwd": "$2b$10$4otU4K9W08whZ3DFJyflBeXgxzRGrHpxlHKT940gDvvvgLmCBYT4a",
"createTime": "Sat Dec 26 2020 11:57:19 GMT+0800 (China Standard Time)",
"updateTime": "Sat Dec 26 2020 11:57:19 GMT+0800 (China Standard Time)"
}
]
}
}

查找数据

请求参数

默认查询条件为与操作,条件满足其中一条需要设置operator为or

{
"pageSize": 10,
"page": 1,
"conditions": {
"name": "dzq",
"mobile": "18518318421"
},
"operator": "or"
}

返回结果

{
"code": 200,
"msg": "success",
"data": {
"pageSize": 10,
"page": 1,
"total": 1,
"data": [
{
"id": "1608954581",
"name": "dzq",
"mobile": "13800138000",
"pwd": "$2b$10$4otU4K9W08whZ3DFJyflBeXgxzRGrHpxlHKT940gDvvvgLmCBYT4a",
"createTime": "Sat Dec 26 2020 11:57:19 GMT+0800 (China Standard Time)",
"updateTime": "Sat Dec 26 2020 11:57:19 GMT+0800 (China Standard Time)"
}
]
}
}

高级应用

插件提供了一下高级自定义功能

const {Controller} = require("duzq-quick-mongo")
const user = new Controller( require("../models/User"))
// 设置数据查询字段
user.projection = {"__v":0,"pwd":0,"updateTime":0,"createTime":0}
// 设置成功编号
user.CODE_OK = 200
// 设置成功消息
user.MSG_OK = "请求成功"
// 设置失败编号
user.CODE_ERROR = 201
// 设置失败消息
user.MSG_ERROR = "请求错误"

自定义前返回数据

{
"code": 200,
"msg": "success",
"data": {
"id": "1608954581",
"_id": "5fe6b2f1eb030db3f5d4c1bd",
"name": "dzq",
"mobile": "13800138000",
"pwd": "$2b$10$VMgVXPNSI7TuHtIYo0vY0ufi6PgsCEc.sv1VkSl0KKkd9Hv3u4gOO",
"createTime": "Sat Dec 26 2020 11:50:10 GMT+0800 (China Standard Time)",
"updateTime": "Sat Dec 26 2020 11:50:10 GMT+0800 (China Standard Time)",
"__v": 0
}
}

自定义后获取数据

{
"code": 200,
"msg": "请求成功",
"data": {
"id": "1608954581",
"_id": "5fe6b49feb030db3f5d4c1be",
"name": "dzq",
"mobile": "13800138000"
}
}

示例代码:https://github.com/dzq/quick-mongo-simple

更加功能需求请提交issue: https://github.com/dzq/quick-mongo

nodejs+express+mongodb 快速接口开发的更多相关文章

  1. 【重点突破】—— Nodejs+Express+MongoDB的使用基础

    前言:最近学习vue和react的高阶项目,都需要和Nodejs+Express+MongoDB结合实现全栈开发.这里结合实例Demo和所学项目集中总结一下这部分服务端的基础知识. 一.Express ...

  2. nodejs+express+mongodb实现登录注册

    nodejs+express+mongodb实现登录注册 1 简介 登录注册功能使用nodejs+express+mongodb完成,其中对mongodb的操作使用mongoose完成,对mongod ...

  3. NodeJS+Express+MongoDB

    一.MongoDB MongoDB是开源,高性能的NoSQL数据库:支持索引.集群.复制和故障转移.各种语言的驱动程序丰富:高伸缩性:MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言 ...

  4. NodeJS+Express+MongoDB 简单实现数据录入及回显展示【适合新人刚接触学习】

    近期在看NodeJS相关 不得不说NodeJS+Express 进行网站开发是很不错,对于喜欢玩JS的来说真是很好的一种Web开发组合 在接触NodeJS时受平时Java或者C#中API接口等开发的思 ...

  5. nodejs+express+mongodb简单的例子

    简单的介绍下node+express+mongodb这三个东西.node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比 ...

  6. NodeJS+Express+mySQL服务端开发详解

    随着NodeJS的发展,现在已经被很多人熟知,NodeJS已经成为了前端开发人员必备的技能.本文不会对NodeJS过多介绍 如果你感兴趣可以访问NodeJS 官网, 维基百科 本文是利用NodeJS+ ...

  7. 从无到有,用Nodejs+express+mongodb搭建简易登陆系统

    前端处理server表示很蛋疼,初学Node,虽然感觉异常强大,但是学起来还是有些吃力的,Node是工具,它不是万能的,搭建一个系统还是需要借助其他一些工具,对于我这个没怎么接触server的前端来说 ...

  8. nodejs+express+mongodb写api接口的简单尝试

    1:启动mongodb服务 我的mongoDB的安装目录:E:\mongoDB\bin,版本:3.4.9 打开cmd  -> e:(进入e盘) -> cd mongoDB/bin(进入mo ...

  9. 基于 React + NodeJS + Express + MongoDB 开发的一个社区系统

    还可以, 功能挺全的, 可以作为react开发入门项目 链接 线上站点: 源码地址:

随机推荐

  1. Gin + 七牛云对象存储

    配置七牛云存储 创建存储空间 拿到密钥 安装七牛云对象存储SDK 推荐go.mod安装 // 将下面地址复制到go.mod,然后执行go mod download github.com/qiniu/a ...

  2. python删除list中的空list

    list1 = [[], [], [], [], [], 'text', 'text2', [], 'moreText'] 如何删除空列表,以便我得到: list2 = ['text', 'text2 ...

  3. Beta冲刺随笔——Day_Two

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 团队进行Beta冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛: ...

  4. 【手把手学习flutter】Flutter打Android包的基本配置和包体积优化策略

    [手把手学习flutter]Flutter打Android包的基本配置和包体积优化策略 关注「松宝写代码」,回复"加群" 加入我们一起学习,天天向上 前言 因为最近参加2020FE ...

  5. opencv-python imread、imshow浏览目录下的图片文件

    ☞ ░ 前往老猿Python博文目录 ░ 一.几个知识点 1.1.使用Python查找目录下的文件 具体请参考<Python正则表达式re模块和os模块实现文件搜索模式匹配>. 1.2.o ...

  6. PyQt(Python+Qt)学习随笔:QSpinBox数字设定部件简介

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 在输入部件中,数字调整框QSpinBox是个很实用 ...

  7. Python中的迭代是什么意思?

    Python中的迭代是指通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代. ...

  8. PyQt(Python+Qt)学习随笔:QTreeWidgetItem项获取项的父项或子项

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 树型部件QTreeWidget中的QTreeWidgetItem项,可以通过child(int in ...

  9. python xlsxwriter创建excel 之('Exception caught in workbook destructor. Explicit close() may be required for workbook.',)

    python2.7使用xlsxwriter创建excel ,不关闭xlsxwriter对象,会报错: Exception Exception: Exception('Exception caught ...

  10. 第三篇 Scrum 冲刺博客

    一.站立式会议 1. 会议照片 2. 工作汇报 团队成员名称 昨日(24日)完成的工作 今天(25日)计划完成的工作 工作中遇到的困难 陈锐基 - 个人信息编辑后与组件关联- 表白墙数据用 Vuex  ...