1 package.json
{
"scripts": {
"dev": "cross-env NODE_ENV=development nodemon ./app.js",
"build": "cross-env NODE_ENV=production webpack ./app.js"
},
"dependencies": {
"cross-env": "^7.0.3",
"express": "^4.18.2",
"lodash": "^4.17.21",
"log4js": "^6.9.0",
"mysql2": "^3.2.0",
"nodemon": "^2.0.21",
"pg": "^8.10.0",
"pm2": "^5.2.2",
"sequelize": "^6.29.1",
"webpack": "^5.59.1"
},
"devDependencies": {
"webpack-cli": "^4.9.1"
}
}
2 app.js
const express = require('express');
const port = '8089'
const app = express();
//连接数据库
const {Sequelize} = require('sequelize')
const sequelize = new Sequelize('django','django','123456',{"host": "localhost","dialect": "mysql"})//要连的数据库
global.sequelize = sequelize
//这里只是测试数据库是否连接成功的,没什么用
try {
sequelize.authenticate();
console.log('数据库连接成功')
} catch (error) {
console.error('数据库连接失败', error);
}
//路由,也可以不用,直接用app.get/post
const UserUrl= require('./user');
app.use('/user', UserUrl)
// 配置允许跨域,也可以省略
app.all('*',function(req,res,next){
res.header("Access-Control-Allow-Origin","*")
res.header('Access-Control-Allow-Headers','Content-Type')
res.header('Access-Control-Allow-Methods','GET,POST,PUT,DELETE')
if (req.method.toLowerCase() == 'options') {
res.send(200); // 让options 尝试请求快速结束
} else {
next();
}
})
//localhost:8089的接口
app.get('/',function(req,res){
res.send('HelloWorld')
})
app.listen(port, () => {
console.log(`服务启动了${port}`)
})
process.on("uncaughtException", (err) => {
console.error(err.stack);
});
3 user.js
//这里要和数据库里表保持一致
const Sequelize = require('sequelize')
const User = sequelize.define(
"user",
{
uid: {type: Sequelize.DataTypes.INTEGER,allowNull: false,primaryKey: true,comment: '主键'},
name: {type: Sequelize.DataTypes.STRING},
password: {type: Sequelize.DataTypes.STRING},
},
{
tableName: 'user',//数据库表名
freezeTableName: false,
timestamps: false,
createdAt: false,
updatedAt: false,
deletedAt: false,
}
);
// 最好把查询方法封装到类里,也可以省略
class UserService {
// 查找全部
static async findAll() {
const rows = await User.findAll();
return rows;
}
// 根据id 查询某一个
static async findbyname(name) {
const rows = await User.findAll({
where: {
name: name,
},
});
return rows;
}
}
// 定义一些路由,当访问地址时去调用上边的查询方法
const express = require("express");
const _ = require("lodash");
const UserUrl = express.Router();
//对应localhost:8089/user/findAll的接口
UserUrl.get("/findAll", async (req, res) => {
let ret = await UserService.findAll();
res.send(ret);
});
//对应localhost:8089/user/findByName?name=lxc的接口
UserUrl.get("/findByName", async (req, res) => {
const { name } = req.query;
const ret = await UserService.findbyname(name);
res.send(ret);
});
module.exports = UserUrl;