IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 创建一个nodejs服务 -> 正文阅读

[JavaScript知识库]创建一个nodejs服务

1.第一步

1.1.创建一个文件
	mkdir <文件名>
	
1.2.进入文件
	cd <文件名>
	
1.3.初始化项目
	npm init
	
	在src/app.js中创建一个服务
	const http=require('http');
	const server=http.createServer((request,response)=>{
		response.end('hello world!');
	})
	server.listen(端口号,域名地址,()=>{
		
	});
	
1.4.安装Nodemon用于监听node项目中文件的变化,并重启服务 -D (开发环境)
	npm install nodemon -D
	
	"scripts": {
	  "dev": "nodemon node ./src/app.js"
	},
	
1.5.创建一个nodemon.json配置文件,指定特殊的watch监听对应变化的文件
	{
		"watch":["./src/**/*.*"]
	}

1.6.创建一个git代码时的忽略文件(.gitignore忽略规则文件)
	# 忽略依赖包
	node_modules
	
备注:什么是web应用?
      服务器(web应用)--》数据库(服务器对数据库的应用)

2.第二步

2.1.安装express -S (生产环境)
    npm install express -S 
    安装好express之后在src/app.js中删除原来添加的代码
	使用
	const express=require("express");
	
	//创建一个express实例
	const app=express();
	
	app.get('/',(request,response)=>{
		response.json({
			name:'我是一条测试数据'
		})
	})
	
	app.listen(8899,()=>{
		console.log('server 启动成功')
	})

3.添加中间件


4.添加路由router

4.1.

5.mysql数据库

5.0.sequelize是什么?
Sequelize 是一个基于 promise 的 Node.js ORM, 目前支持 Postgres, MySQL, SQLite 和 Microsoft SQL Server. 
它具有强大的事务支持, 关联关系, 预读和延迟加载,读取复制等功能.

5.1.为您选择的数据库手动安装驱动程序
npm install mysql2 -S # MySQL

5.2.要连接到数据库,您必须创建一个 Sequelize 实例,安装sequelize
npm install sequelize -S

5.3.安装sequelize-cli
npm install sequelize-cli -D

5.4.初始化项目
npx sequelize-cli init
初始化成功后生成的文件
config:链接数据库的配置文件,它告诉 CLI 如何连接数据库
migrations:数据库迁移文件
models:项目中操作数据表的文件
seeders:初始化脚本

5.5.创建模型(即:在本地建表)
npx sequelize-cli model:generate --name 模型名 --attributes 属性值 例如(firstName:string,lastName:string,email:string)

5.6.运行迁移,向数据库中插入表 --env=环境 如(开发:development;生产:production)
npx sequelize-cli db:migrate --env=development

5.7.向数据库中插入数据
//引入数据库模型
const models=require('../models');
//向数据库中插入数据
app.get('/create',async (req,res)=>{
	let {name,address}=req.query;
	//promise user-->sequelize 对象
	let user=await models.User.create({
		name,
		address
	})
	console.log("[]",user);
	res.json({
		msg:'请求成功',
		data:null,
		code:"200"
	})
})
//查询全部数据
app.get('/list',async (req,res)=>{
	let list =await models.User.findAll();
	res.json({
		msg:'请求成功',
		data:{
			list:list
		},
		code:"200"
	})
})
//查询单条数据
app.get('/detail/:id',async (req,res)=>{
	let {id}=req.params;
	let datail=await models.User.findOne({
		where:{
			id
		}
	})
	res.json({
		msg:"请求成功",
		data:{
			datail
		},
		code:"200"
	})
})
//修改数据
app.post("/update/:id",async (req,res)=>{
	let {id}=req.params;
	let {name,address}=req.body;
	
	console.log("[]",name,address)
	await models.User.update({
		name:name,
		address:address
	},{
		where:{
			id:id
		}
	})
	res.json({
		msg:"请求成功",
		data:null,
		code:"200"
	})
})

6.后台接收参数的方式

6.1.form-data格式数据
	安装依赖包:npm install express-formidable
	在app.js中引入:const formidable = require('express-formidable') // 引入
					app.use(formidable());  // 中间件
	通过req.fields 接收数据

6.2.x-www-form-urlencoded格式数据
	使用内置依赖包:app.use(express.urlencoded({ extended: false }))
	
6.3.JSON格式数据
	使用内置依赖包:app.use(express.json());

7.解决跨域请求

7.1.安装依赖
	npm install cors -S
	在app.js中引入
	const cors =require("cors");
	app.use(cors());

在这里插入图片描述

app.js

const express=require("express");
const path = require('path');
const cors =require("cors");
//创建一个express实例
const app=express();
app.use(cors());

//引入路由
const loginRouter=require('./routes/login.js');
const addressRouter=require('./routes/address.js');

//解析传递参数
app.use(express.urlencoded({ extended: false }));

//引入数据库模型
const models=require('../models');
//向数据库中插入数据
app.get('/create',async (req,res)=>{
	let {name,address}=req.query;
	//promise user-->sequelize 对象
	let user=await models.User.create({
		name,
		address
	})
	console.log("[]",user);
	res.json({
		msg:'请求成功',
		data:null,
		code:"200"
	})
})
//查询全部数据
app.get('/list',async (req,res)=>{
	let list =await models.User.findAll();
	res.json({
		msg:'请求成功',
		data:{
			list:list
		},
		code:"200"
	})
})
//查询单条数据
app.get('/detail/:id',async (req,res)=>{
	let {id}=req.params;
	let datail=await models.User.findOne({
		where:{
			id
		}
	})
	res.json({
		msg:"请求成功",
		data:{
			datail
		},
		code:"200"
	})
})
//修改数据
app.post("/update/:id",async (req,res)=>{
	let {id}=req.params;
	let {name,address}=req.body;
	
	console.log("[]",name,address)
	await models.User.update({
		name:name,
		address:address
	},{
		where:{
			id:id
		}
	})
	res.json({
		msg:"请求成功",
		data:null,
		code:"200"
	})
})
//删除数据
app.delete('/delete/:id',async (req,res)=>{
	let { id } =req.params;
	await models.User.destroy({
		where:{
			id:id
		}
	})
	res.json({
		msg:'请求成功',
		data:null,
		code:'200'
	})
})


//注册路由
app.use('/login',loginRouter);
app.use('/address',addressRouter);

//内置中间件-注册静态文件
app.use('/static',express.static(path.join(__dirname,'public')))

//异常处理的中间件
function error_handler_middleware(err,req,res,next){
	if(err){
		res.status(500).json({
			msg:'请求接口异常'
		})
	}else{
		next()
	}
}
app.use(error_handler_middleware);

//路由请求错误
app.use(function (req, res, next) {
  res.status(404).send({
	  code:'404',
	  data:null,
	  msg:"Sorry can't find that!"
  })
})    





app.listen(8899,()=>{
	console.log('server 启动成功')
	console.log("Local:http://127.0.0.1:8899")
})

routes/address.js

const express=require("express");
const models=require("../../models");

const Router=express.Router();

Router.post('/create',async (req,res)=>{
	console.log("[]",req)
	let {province,city,area}=req.body;
	await models.Address.create({
		province,city,area
	})
	res.json({
		msg:'请求成功',
		data:null,
		code:"200"
	})
})

module.exports=Router;
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:23:13  更:2022-03-12 17:25:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:48:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码