express+sequelize+mysql使用nodejs开发接口

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值