1. 程式人生 > 實用技巧 >node操作mysql資料庫例項

node操作mysql資料庫例項

const Koa = require("koa");
const Router = require("koa-router");
//要引入promise類
const mysql = require("mysql2/promise");

const app = new Koa();
const router = new Router();

//實現實現對USERS表增刪改查
//使用Promise
(async () => {
  const connection = await mysql.createConnection({
    host: "localhost",
    user: 
"root", password: "zhangpp", database: "zpp_web", }); //addUser router.get("/adduser", async (ctx) => { let { name, age } = ctx.query; console.log(name, age); let sql = `INSERT INTO users (id,name,age) VALUES (0,?,?)`; let [row] = await connection.execute(sql, [name, +age]);
if (row.affectedRows) { ctx.body = "add user scuuess"; } else ctx.body = "add user fail"; }); //deluser router.get("/deluser", async (ctx) => { let { id } = ctx.query; let sql = "DELETE FROM users WHERE id=?"; let [row] = await connection.execute(sql, [id]); if (row.affectedRows) ctx.body = "del user seccuss";
else ctx.body = "del user fail"; }); //updateuser router.get("/updateuser", async (ctx) => { let { age, id } = ctx.query; let sql = `UPDATE users SET age=? where id=? `; let [row] = await connection.execute(sql, [age, id]); if (row.affectedRows) ctx.body = "update user seccuss"; else ctx.body = "update user fail"; }); //finduser router.get("/finduser", async (ctx) => { let { id } = ctx.query; let sql=`SELECT * FROM users WHERE id=?`; let [row]=await connection.execute(sql,[id]); ctx.body=row; }); //findeUsers router.get('/findusers',async (ctx)=>{ let {age,ofset=0,limit=5}=ctx.query; let sql=`SELECT * FROM users where age>? ORDER BY age LIMIT ?,?`; let [row]=await connection.execute(sql,[age,ofset,limit]); ctx.body=row; }) })(); app.use(router.routes()); app.listen(8080, () => { console.log("建立成功,埠:8080"); });

學習一下ORM 操作資料庫

const { Sequelize } = require("sequelize");
//使用ORM 物件關係型資料庫

const getUserModel = require("./user_model");

//連線mysql 資料庫
const sequelize = new Sequelize({
  dialect: "mysql", //連線的資料
  host: "localhost",
  port: "3306",
  username: "root",
  password: "zhangpp",
  database: "zpp_web",
});
//獲取user model 物件

var userModel = getUserModel(sequelize);
//物件初始化到資料庫表
sequelize.sync(); //同步,如果表發生變化不會同步過去
// sequelize.sync({force:true}) //同步,強制同步
建立user_model.js
const {Model,DataTypes}=require('sequelize');

class userModel extends Model{
}

module.exports=(sequelize)=>{
    userModel.init({
        id:{
            type:DataTypes.INTEGER,
            primaryKey:true,
            autoIncrement:true,
            allowNull:false,
        },
        name:{
            type:DataTypes.STRING,
            allowNull:false,
        },
        age:{
            type:DataTypes.INTEGER,
            allowNull:false
        }
    },{// 第二個引數設定表的資訊
        tableName:'users',  //表名 
        sequelize,   //sequelize例項 
        createdAt:false,
        updatedAt:false
    })

    return userModel;
}

改造mysql2操作資料庫通過sequelize物件實現

建立
 let row = await userModel.create({
    name,age,});
  ctx.body = row;
刪除
let row = await userModel.destroy({
    where: {
      id,},});
  修改
let row = await userModel.update(
    {age},
    {where: {id }}
  );
查詢
let row = await userModel.findByPk(+id); //通過主鍵id查詢
多條件查詢  
let row = await userModel.findAll({
    where: {
      age: {
        [Op.gt]: age,
      },
    },
    order: [["age", "DESC"]],
    offset: +ofset,
    limit: +limit,
  });