zoukankan      html  css  js  c++  java
  • Nodejs 创建服务器并与MySQL连接

    const http = require('http');
    const mysql = require('mysql');
    const url = require('url');
    const util = require('util');
    
    //连接数据库
    const connection = mysql.createConnection({
        host:'---',
        user:'--',
        password:'--',
        database:'----'
    });
    connection.connect(function(){
        console.log('数据库连接成功!');
    });
    
    //request 请求信息 response 返回信息
    http.createServer(function(request,response){
        //获得HTTP请求的method和url
        console.log(request.method+':'+request.url);
        if(request.method=="GET"&&request.url!="/favicon.ico"){
            let params = url.parse(request.url,true).query; //parse将字符串转成对象,request.url="/?id=1",true表示id:'1'
            response.writeHead(200,{'Access-Control-Allow-Origin':'*','Content-Type':'text/plain;charset=utf-8'});
            let serSql = '数据库查询语句';
            connection.query(serSql,function(err,result){
                if(err){
                    console.log('[SELECT ERROR] - ',err.message);
                    return;
                }
                console.log('查询结果:',result);
                response.end(JSON.stringify(result));//返回值必须是 string 或 buffer 类型
            });
        }
        else if(request.method=="POST"){
            // 定义一个空的数据变量来接受post请求的参数
            let postData = '';
            // 给req对象注册一个接收数据的事件
            request.on('data',function (chuck) {  
                /**data事件详解
                 * 浏览器每发送一次数据包(chuck)是字符串类型的,该函数会调用一次。
                 * 该函数会调用多次,调用的次数是由数据和网速限制的
                 */
                // 每次发送的都数据都叠加到postData里面
                postData += chuck;
            })
            // 到post请求数据发完了之后会执行一个end事件,这个事件只执行一次
            request.on('end', function () {
                // 此时服务器成功接受了本次post请求的参数
                // post请求最终获取到的数据就是url协议组成结构中的query部分
                console.log(postData);
                // 使用querystring模块来解析post请求
                /**
                 * querystring详解
                 * 参数:要解析的字符串
                 * 返回值:解析之后的对象。
                 */
                let temp = JSON.parse(postData);
                //插入数据
                const addSqlParams = [?,?,?,?,?];// addSql 中 ? 对应的数据填在 addSqlParams 中
                const addSql = "insert into 表格名称 values(?,?,?,?,?)";
                connection.query(addSql,addSqlParams,function(err,result){
                    if(err){
                        console.log('[INSERT ERROR] - ',err.message);
                        return;
                    }
                    console.log('INSERT ID:',result);
                });
            })
        }
    }).listen(要监听的端口号);
  • 相关阅读:
    AES算法加解密Java工具类AESUtil
    并发与高并发(二十二)高并发の服务降级与服务熔断思路
    并发与高并发(二十一) 高并发の应用限流思路
    并发与高并发(二十)高并发の应用拆分思路
    da5_模块
    day5_集合
    day5_递归调用
    day5_判断价格输入是否是正整数或正小数
    day5_函数_判断小数
    day5_函数_文件读写_用一个函数来满足文件的读或者写_应用默认参数
  • 原文地址:https://www.cnblogs.com/ZLDJ-15-516/p/11197616.html
Copyright © 2011-2022 走看看