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. JavaSE 学习笔记01丨开发前言与环境搭建、基础语法

    本蒟蒻学习过C/C++的语法,故在学习Java的过程中,会关注于C++与Java的区别.开发前言部分,看了苏星河教程中的操作步骤.而后,主要阅读了<Java核心技术 卷1 基础知识>(第8 ...

  2. Grakn Forces 2020 ABCDE题解

    看到老外评论区中说,这场的难度估计是\(div.1\)和\(div.1.5\)的合并 A. Circle Coloring #构造 题目链接 题意 给定三个长度为\(n\)数组\(a,b,c\),要你 ...

  3. Java基础教程——枚举类型

    枚举类型 枚举类型在JDK 5时引入. enum WeekEnum { MONDAY, TUESDAY, WEDNESDAY, THURDAY, FRIDAY, SATURDAY, SUNDAY } ...

  4. AA:白细胞计数

    总时间限制:  1000ms 内存限制:  65536kB 描述 医院采样了某临床病例治疗期间的白细胞数量样本n份,用于分析某种新抗生素对该病例的治疗效果.为了降低分析误差,要先从这n份样本中去除一个 ...

  5. [自学] MIT的EECS本科+研究生课程【持续更新中-2020.06.02】

    前言 我的本科是读的电子信息工程,研究生跟着老师做项目,参与到深度学习中来,毕业后做了算法工程师,工作之后愈发发现,不论从事什么岗位,基础都很重要,但现在也没有时间再读一遍本科了,自学的话也不知道从何 ...

  6. 解决 spring-integration-mqtt 频繁报 Lost connection 错误

    问题描述 在之前的博客介绍了如何在 Spring Boot 集成 MQTT,后面使用中没有发现问题,最近发现一直报错: Lost connection: Connection lost; retryi ...

  7. Hbase 简单封装(Hbase 2.0+ API)

    前言 封装了一些常用的方法 添加一行数据 创建表(单列族) 创建表(多列族) 删除表 判断表是否存在 获取一行数据(根据rowkey) 获取某个列族某个列的某行数据 打印出result(方便展示数据) ...

  8. crawlergo动态爬虫去除Spidername使用

    本来是想用AWVS的爬虫来联动Xray的,但是需要主机安装AWVS,再进行规则联动,只是使用其中的目标爬虫功能感觉就太重了,在github上面找到了由360 0Kee-Team团队从360天相中分离出 ...

  9. 性能测试基础——(MEN)

    关于内存在一块其实我并不是很想拿出来说,一般情况下内存这一块都是可优化的,可以通过硬件资源或者调整一些系统或者应用系统的参数配置来进行优化. 很多同僚问到了"内存泄漏"和" ...

  10. https中间人攻击

    攻击过程: 服务器向客户端发送公钥. 攻击者截获公钥,保留在自己手上. 然后攻击者自己生成一个[伪造的]公钥,发给客户端. 客户端收到伪造的公钥后,生成加密hash值发给服务器. 攻击者获得加密has ...