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. Java基础教程——字节流

    IO流 水流 特点 连续性 逝者如斯夫,不舍昼夜: 方向性 一江春水向东流.水往低处流.百川东到海,何时复西归?少壮不努力,老大徒伤悲! 源头尽头 唯有源头活水来:覆水难收 Java里的IO也有这样的 ...

  2. MySQL数据更新

    MySQL数据更新: 导读: 该练习是本人课程学习进行整理的,若有不对,欢迎指出! 该练习没有配套的sql文件,如果需要可以看之前的文章有student表等(MySQL查询练习); 这是最后一部分练习 ...

  3. loading爬坑--跳出思维误区

    最近在摸loading这个登录的loading动画,爬了一些坑. 第一坑--百度坑 我们爬的坑,前人都已经已经爬过了.并且把路都放在度娘了.--鲁迅 我最开始是不知道这个直接叫loading的,最开始 ...

  4. Spring Boot 2.x 多数据源配置之 JPA 篇

    场景假设:现有电商业务,商品和库存分别放在不同的库 配置数据库连接 app: datasource: first: driver-class-name: com.mysql.cj.jdbc.Drive ...

  5. Python中函数的参数带星号是什么意思?

    参数带星号表示支持可变不定数量的参数,这种方法叫参数收集. 星号又可以带1个或2个,带1个表示按位置来收集参数,带2个星号表示按关键字来收集参数. 1.带一个星号的参数收集模式: 这种模式是在函数定义 ...

  6. 第11.12节 Python元字符“|”支持的正则表达式多选一匹配模式

    re模块支持多个正则表达式使用"|"(逻辑或)模式来组合,扫描目标字符串时, '|' 分隔开的正则表达式组合从左到右进行匹配,只要其中一个匹配成功就认为该组合匹配成功,不再进行组合 ...

  7. PyQt(Python+Qt)学习随笔:信号签名(signature of the signal)是什么?

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 1.概念解释 函数签名:由函数的参数个数与其类型组成.函数在重载时,利用函数签名的不同即参数个数与类 ...

  8. RedHat-Linux操作指令第1篇

    不同的linux系统切换方式会稍有一点差别 从图形界面切换到字符界面:Alt+F(1-8) 或者 Alt+Ctrl+Shift+F(1-8) 从字符界面切换回图形界面:Alt+F7 字符界面启动到图形 ...

  9. Java基础学习之基础概念与环境搭建(1)

    1.Java基础概念 1.1.Java语言的特点 Java语言是简单易学的 Java语言是面向对象(封装.继承和多态) Java语言是平台无关的(一次编译,到处运行) Java语言是可靠的.安全的(异 ...

  10. LeetCode初级算法之数组:217 存在重复元素

    存在重复元素 题目地址:https://leetcode-cn.com/problems/contains-duplicate/ 给定一个整数数组,判断是否存在重复元素.如果任意一值在数组中出现至少两 ...