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. Codeforces Round #677 (Div. 3) E、G题解

    E. Two Round Dances #圆排列 题目链接 题意 \(n\)(保证偶数)个人,要表演一个节目,这个节目包含两种圆形舞蹈,而每种圆形舞蹈恰好需要\(n/2\)个人,每个人只能跳一种圆形舞 ...

  2. C++基础入门知识:C++命名空间(名字空间)详解

    一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突.当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突. 例如小李和小韩都参 ...

  3. C#(三)基础篇—方法,递归,条件分支,循环,三元操作符

    C# 本随笔为个人复习巩固知识用,多从书上总结与理解得来,如有错误麻烦指正 2020-12-03 1.方法 static void Main(string[] args) { float Sum(fl ...

  4. JDK(JDK8,JDK11)高速下载

    JDK(JDK8,JDK11)高速下载 oracl 需要登陆才能下载,网速还贼慢. 华为云各版本高速下载通道:https://repo.huaweicloud.com/java/jdk/

  5. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件移除选项卡的removeTab和clear方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 要从一个QTabWidget中去除选项卡,可用使用removeTab和clear方法. 1.移除选项 ...

  6. PyQt(Python+Qt)学习随笔:model/view架构中支持QListView列表中展示图标的两种方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在QListView列表视图中的项不但可以展示文字,也可以展示图标和复选框,同时可以指定项是否可以拖 ...

  7. 基础篇——SpringCloudAlibaba分布式组件

    官方文档:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md 想要使用SpringCloudAlibaba ...

  8. swpuCTF2019 web1 无列名注入

    上周参加的swpuctf比赛第一道web题做了好久,在最后一个小时用非预期的方法做出来了,看了官方题解之后记录一下wp里面的无列名注入. 关于无列名注入可以看一下这篇链接 https://www.ch ...

  9. 搭建xss-platform平台

    一直想搭在公网搭建自己的XSS平台用来验证XSS漏洞,使用别人的平台自己心里总会有担心被摘果子的顾虑,前几天参考了不少前人的博客,终于搭建好了,搭建的途中也遇到了不少坑,故把搭建的经验分享出来,大佬轻 ...

  10. AcWing 404. 婚礼

    大型补档计划 题目链接 根据题意,显然只有新郎这边可能存在矛盾,考虑这边怎么放即可,新娘那边的放法与这边正好相反且一一对应. 显然对于两个约束条件是一对矛盾,开始我以为可以用并查集,后来发现输出方案的 ...