【nodejs】express-generator项目--创建接口及数据库连接

文章目录

  • 一、创建接口
    • 1、路由routes
      • (1)新建路由文件
      • (2)注册路由
    • 2、控制器controller
      • (1)新建controller文件
      • (2)代码
    • 3、services
      • (1)新建services文件
      • (2)代码
    • 4、models
      • (1)新建services文件
      • (2)安装 mongoose
      • (3)代码
    • 5、app.js
      • (1)代码
      • (2)连接数据库后重启项目
      • (2)接口请求结果
  • 二、数据库连接
    • 1、db.config.js
      • (1)新建数据库配置文件
      • (2)代码
      • (3)使用
    • 2、打开数据库管理工具
      • (1)连接MongoDB
      • (2)连接成功
      • (3)添加数据
      • (4)查询结果


一、创建接口

1、路由routes

配置路由信息,注册路由

(1)新建路由文件

  • routes 文件夹下新建路由文件,例如 UserRouter.js

(2)注册路由

var express = require('express');
const UserController = require('../controllers/UserController');
var UserRouter = express.Router();/* 路由方法写入controller文件夹下文件(如:UserController.js)*/
UserRouter.post('/user/login', UserController.login);module.exports = UserRouter;

2、控制器controller

拿到前端数据,处理加工,进行调用数据层(Services),返回数据

(1)新建controller文件

  • 项目根目录下创建 controllers 文件夹
  • controllers 文件夹下新建文件,例如 UserController.js

(2)代码

const UserService = require("../services/UserService")const UserController = {login: async (req, res) => {let result = await UserService.login(req.body)console.log(req.body)if (result.length === 0) {res.send({code: '-1',error: "用户名密码不匹配"})} else {res.send({ActionType: "OK"})}}
}
module.exports = UserController

3、services

引用创建的数据库模型,进行数据的增删改查操作

(1)新建services文件

  • 项目根目录下创建 services 文件夹
  • services 文件夹下新建文件,例如 UserService.js

(2)代码

const UserModel = require("../models/UserModel")const UserService = {login: async ({ username, password }) => {return UserModel.find({username, password})}
}
module.exports = UserService

4、models

创建数据库模型

(1)新建services文件

  • 项目根目录下创建 models 文件夹
  • models 文件夹下新建文件,例如 UserModel.js

(2)安装 mongoose

npm i mongoose --save

(3)代码

const mongoose = require("mongoose")
const Schema = mongoose.Schema// user模型===>users集合
const UserType = {username: String,password: String,gender: Number, //性别 0,1,2introduction: String, //简介avatar: String,role: Number //管理员1,编辑2
}
const UserModel = mongoose.model("user", new Schema(UserType))
module.exports = UserModel

5、app.js

(1)代码

  • 项目根目录下 app.js 文件中加入如下代码:
const UserRouter = require('./routes/UserRouter');app.use( UserRouter);

(2)连接数据库后重启项目

连接数据库在本文后面有提到

(2)接口请求结果

  • 添加数据后的查询结果可在本文最后查看;
  • vue项目中请求查看结果如下(数据库中还未添加数据):

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、数据库连接

1、db.config.js

(1)新建数据库配置文件

  • 项目根目录下创建 config 文件夹
  • config 文件夹下新建文件,例如 db.config.js

(2)代码

const mongoose = require("mongoose")mongoose.connect("mongodb://127.0.0.1:27017/company-system")

(3)使用

bin\www 文件中加入如下代码

require("../config/db.config")

2、打开数据库管理工具

我这里使用的是Navicat

(1)连接MongoDB

在这里插入图片描述

(2)连接成功

  • 项目重启后数据库如下
    在这里插入图片描述

(3)添加数据

  • 点击编辑栏下的添加文档
    在这里插入图片描述
  • 输入如下数据,点击添加
    在这里插入图片描述
    在这里插入图片描述

(4)查询结果

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux - Docker 安装 Nacos

拉取 Nacos 镜像 使用以下命令从 Docker Hub 拉取最新版本的 Nacos 镜像: docker pull nacos/nacos-server启动 Nacos 容器 使用以下命令启动 Nacos 容器: docker run -d \--name nacos \--privileged \--cgroupns host \--env JVM_XMX256m \--env M…

oracle 清空回收站

参考官方文档 select * from user_recyclebin; select * from dba_recyclebin; ---清除回收站中当前用户下的对象 purge recyclebin; ---清除回收站中所有的对象 purge dba_recyclebin; ---清除回收站中指定用户的表 PURGE TABLE owner.table_name; ---清除回收站中指…

Serverless 成本再优化:Knative 支持抢占式实例

作者:元毅、向先 Knative 是一款云原生、跨平台的开源 Serverless 应用编排框架,而抢占式实例是公有云中性价比较高的资源。Knative 与抢占式实例的结合可以进一步降低用户资源使用成本。本文介绍如何在 Knative 中使用抢占式实例。 背景信息 抢占式实…

Python | Leetcode Python题解之第35题搜索插入位置

题目&#xff1a; 题解&#xff1a; class Solution:def searchInsert(self, nums: List[int], target: int) -> int:left, right 0, len(nums) #采用左闭右开区间[left,right)while left < right: # 右开所以不能有,区间不存在mid left (right - left)//2 # 防止溢出…

Java web应用性能分析概叙

“系统慢”&#xff0c;这是任何一个应用都会出现的问题&#xff0c;面对“系统慢”的问题&#xff0c;客户、测试、开发、管理者等不同角色的人员有不同反应&#xff1a; 客户&#xff1a;啥破东西啊&#xff0c;这么卡&#xff01; 测试&#xff1a;性能bug已提交。 开发&…

【OpenGL实验】在python、Qt5、pyOpenGL程序的若干要点

实验效果图: 代码 目录 一、说明二、关于QGLWidget2.1 三个方便的虚函数2.2 析构函数2.3 QGLWidget析构函数三、关于QGLWidget的三个虚函数分工3.1 initializeGL:数据准备、数据绑定分离3.2 resizeGL:视角改变函数3.3 paintGL:绘画函数四、主窗口的配合:刷新周期的设定4…

git 冲突与解决冲突

目录 1.使用 git 解决冲突 GIT 常用命令 制造冲突 解决冲突 2.使用 IDEA 解决冲突 产生冲突 解决冲突 1.使用 git 解决冲突 GIT 常用命令 命令作用git clone克隆git init初始化git add 文件名添加到暂存区git commit -m " 日志信息" 文件名提交到本地库git st…

记录一个Maxwell采集MySQL数据时报安全证书时间不通过的问题

【背景描述】 我的zk&#xff0c;kafka和Maxwell都正常启动了 此时我需要用Maxwell将MySQL的一张表user_info将其全量同步到kafka当中时发生报错&#xff0c;命令如下&#xff1a; [atguiguhadoop102 datas]$ /opt/module/maxwell/bin/maxwell-bootstrap --database gmall --…

ACE Lab 数据恢复/数据取证技术交流研讨会

2024年4月20-21日&#xff0c;ACE Lab 数据恢复/数据取证技术交流研讨会在北京举行&#xff0c;天津鸿萌科贸发展有限公司参加了这次技术研讨会。 ACE Lab 的 PC-3000 系列产品是数据恢复及取证领域的顶级工具&#xff0c;深受领域内专家的推崇。 本次技术交流带来了如下最新技…

【Python-装饰器】

Python-装饰器 ■ 简介■ 装饰器的一般写法&#xff08;闭包写法&#xff09;■ 装饰器的语法 (outer写法) ■ 简介 装饰器其实是一种闭包&#xff0c; 功能就是在不破坏目标函数原有的代码和功能的前提下为目标函数增加新功能。 ■ 装饰器的一般写法&#xff08;闭包写法&am…

分享购热潮席卷而来:解析其背后的成功密码

亲爱的朋友们&#xff0c;我是微三云的周丽&#xff0c;一名专注于私域电商模式创新的探索者。 随着数字化时代的到来&#xff0c;消费者的购物行为也在不断变化&#xff0c;因此&#xff0c;企业必须不断地探索新的ying销方式&#xff0c;以xi引用户、提升xiao售额。而最近备…

SVN泄露(ctfhub)

目录 下载安装dvcs-ripper 使用SVN 一、什么是SVN&#xff1f; 使用SVN能做什么&#xff1f; 二、SVN泄露&#xff08;ctfhub&#xff09; SVN源代码漏洞的主要原因&#xff1a; 工具准备&#xff1a;dirsearch、dvcs-ripper 网络安全之渗透测试全套工具篇&#xff08;内…

深入理解VGG网络,清晰易懂

深入理解VGG网络 VGG网络是深度学习领域中一个非常经典的卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;由牛津大学的视觉几何组&#xff08;Visual Geometry Group&#xff09;提出。它在2014年的ImageNet挑战赛中取得了第二名的好成绩&#xff0c;并且在随后的许…

智慧水务能效管理系统平台/地下污水厂配电系统电气安全设计

安科瑞电气薛瑶瑶18701709087 1、引言 地下水污厂在城市建设中扮演着重要的角色,负责对城市污水和废物进行处理和排放。然而,由于地下水污厂中存在着许多危险因素,如有害气体、液体和固体废物等,因此要保证电气安全。电气安全系统是地下水污厂安全生产的重要保障措施之一,包括…

C语言进阶课程学习记录-函数参数的秘密

C语言进阶课程学习记录-函数参数的秘密 实验实验小结调用约定实验-求平均数实验-可变参数的函数小结 本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程&#xff0c;图片全部来源于课程PPT&#xff0c;仅用于个人学习记录 实验 #include <stdio.h>int func(int i, int…

MySQL学习笔记1(MySQL基础)

1.MySQL基础 1.数据库相关概念 ​ *数据库&#xff1a;存储数据的仓库&#xff0c;数据是有组织的进行存储 DtaBase(DB) ​ *数据管理系统&#xff1a;操纵和管理数据库的大型软件 DataBase Management System (DBMS) ​ *SQL&#xff1a;操作关系型数据库的编程语言&#…

初始C++

1. C关键字(C98) C总计63个关键字&#xff0c; C语言32个关键字 ps&#xff1a;下面我们只是看一下C有多少关键字&#xff0c;不对关键字进行具体的讲解。后面我们学到以后再 细讲。 2. 命名空间 在C/C中&#xff0c;变量、函数和后面要学到的类都是大量存在的&#xff0c;…

JAVA学习笔记28(常用类)

1.常用类 1.1 包装类 1.包装类的分类 ​ 1.针对八中基本数据类型相应的引用类型–包装类 ​ 2.有了类的特点&#xff0c;就可以调用类中的方法 2.包装类和基本数据类型的转换 ​ *装箱&#xff1a;基本类型 --> 包装类型 //手动装箱 int n1 100; Integer integer ne…

【C语言__函数栈帧的创建和销毁__复习篇9】

目录 前言 一、知识补充 二、分析创建和销毁的过程 三、前言问题回答 前言 本篇主要讨论以下问题&#xff1a; 1. 编译器什么时候为局部变量分配的空间 2. 为什么局部变量的值是随机的 3. 函数是怎么传参的&#xff0c;传参的顺序是怎样的 4. 形参和实参是什么关系 5. 函数…

电商平台业务及架构演变史

不少人认为电商系统很简单&#xff0c;因为现在做电商的太多了&#xff0c;看到的电商产品也多。看来看去产品都差不多&#xff0c;没什么特别。 其实中国电商发展已有20多年历史&#xff0c;电商以销售为核心连接着研、产、供、销、服整套的信息系统体系。其中的设计并没有那…