入坑node服務開發---數據查詢接口

接下來準備連接一下數據庫 暫時選擇用mysql和sequelize

項目在一步步完善了 這裏只是記錄自己的開發流程並不是詳細的教程

這次的代碼在這裏  https://github.com/chunsenye/nodeServerHistory/tree/master/v1.0.0/mykoaserver

  • 安裝數據庫 my_super_db
  • 創建數據庫與用戶表 user 
  • 添加數據 
    INSERT INTO `my_super_db`.`user`
    (`userid`,
    `usename`,
    `regitime`,
    `lastlogin`,
    `sex`)
    VALUES
    (1,
    'yeyeye',
    '2020-03-20 15:48:57',
    '2020-03-20 15:48:57',
    '男');
    SELECT * FROM my_super_db.user;

     

  • 編寫查詢接口
    // app.js
    const Koa = require('koa')
    const Router = require('koa-router')
    const Sequelize = require('sequelize')
    
    var client = require('./client.js')
    var model = require('./models/user')
    const app = new Koa();
    const router = new Router();
    
    // logger
    
    app.use(async (ctx, next) => {
        await next();
    });
    
    // response
    router.get('/getUser', async (ctx) => {
        // 連接數據庫進行查詢
        let data, data2
        try {
            data = await client.query('select * from user')
            const pool = new model(client, Sequelize);
            data2 = await pool.findAndCountAll({})
        } catch (e) {
            console.log(e);
        }
        ctx.body = {
            data,
            data2
        }
    })
    
    app.use(router.routes());
    
    app.listen(8080, () => {
        console.log(`Server is listening on 8080`);
    });
    
    // client.js
    const Sequelize = require('sequelize')
    const params = {
        host: 'localhost',
        port: 3306,
        dialect: 'mysql',
        dialectOptions: {
            useUTC: false, //for reading from database
            dateStrings: true,
            typeCast: true
        },
        timezone: "+08:00",
        pool: {
            max: 10000, //最大連接數
            min: 0,     //最小連接數
            acquire: 1000000,   //請求超時時間
            idle: 10000 //斷開連接後,連接實例在連接池保持的時間
        },
        define: {
            timestamps: false
        },
    
        operatorsAliases: false
    }
    const client = new Sequelize('my_super_db', 'root', '123456', params);
    
    module.exports = client
    
    /* jshint indent: 1 */
    // user.js
    module.exports = function(sequelize, DataTypes) {
    	return sequelize.define('user', {
    		userid: {
    			type: DataTypes.INTEGER(11),
    			allowNull: false,
    			primaryKey: true,
    			autoIncrement: true
    		},
    		usename: {
    			type: DataTypes.STRING(45),
    			allowNull: false
    		},
    		regitime: {
    			type: DataTypes.DATE,
    			allowNull: true,
    			defaultValue: sequelize.literal('CURRENT_TIMESTAMP')
    		},
    		lastlogin: {
    			type: DataTypes.DATE,
    			allowNull: true,
    			defaultValue: sequelize.literal('CURRENT_TIMESTAMP')
    		},
    		sex: {
    			type: DataTypes.STRING(45),
    			allowNull: true
    		},
    	}, {
    		tableName: 'user'
    	});
    };
    
    {
      "name": "myserver",
      "version": "1.0.0",
      "description": "yeyyeyeeyeeeee",
      "main": "app.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "yeyeye",
      "license": "ISC",
      "dependencies": {
        "koa": "^2.11.0",
        "koa-router": "^8.0.8",
        "mysql": "^2.18.1",
        "mysql2": "^2.1.0",
        "sequelize": "^5.21.5"
      }
    }
    

    文件夾結構

  • 上傳代碼
  • 運行代碼

這裏是服務端的接口

接下來要在前端項目中調用這個接口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章