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;
|