• Node.js基础学习三之登录功能


    本篇介绍Node.js访问数据库并返回数据给客户端

    需求基于Node.js学习(二)

    数据库请下载:user.sql

    1、创建user 实体类(model-user.js)

    function User(id,userName,userPsw){
        this.id = id;
        this.userName = userName;
        this.userPsw = userPsw;
    }
    // getter
    User.prototype.getUserName = function () {
        return this.userName;
    };
    User.prototype.getUserPsw = function () {
        return this.userPsw;
    };
    
    module.exports = User; // 模块化

    2、创建node-sql.js,对user表进行CURD

    var mySql = require('mysql');
    // 数据库属性
    var connection = mySql.createConnection({
        host:"localhost", //主机
        user:"",// 字符串内写数据库用户名
        password:"", //数据库连接密码
        database:"", // 数据库名
        port:3306 // 端口
    });
    // 连接
    connection.connect();
    // 数据库执行语句
    var sql;
    //
    function CURD(){}
    //
    CURD.prototype.add = function(obj){
    
    };
    //
    CURD.prototype.del = function(id){
    
    };
    //
    CURD.prototype.update = function(obj){
    
    };
    //
    CURD.prototype.check = function(obj,callback){
        sql = "SELECT COUNT(*) FROM `user` AS u where u.userName =  ? AND u.userPsw = ?";
        console.log(obj.getUserName() + "====" + obj.getUserPsw());
        var addParams = [obj.getUserName(),obj.getUserPsw()];
        if(obj){
            connection.query(sql,addParams, function (error, result) {
                if(error){
                    console.log("[SELECT ERROR] - ",error.message);
                    return;
                }
                console.log("----------------------------SELECT----------------------------");
                console.log(result);
                console.log(result[0]);
                console.log(result[0]["COUNT(*)"]);
                console.log("--------------------------------------------------------------
    
    ");
                callback(result[0]["COUNT(*)"]);
            });
    
        }else{
            // 返回所有对象
        }
    };
    module.exports = CURD;

    这里提下var mySql = require('mysql'); 加载mysql 模块,安装的node.js 中没有这个模块,需要手动下载,推荐一篇不错的文章,不过请看完再装

    3、node-post.js 监听端口

    var http = require('http');
    var qs = require('querystring');
    var url = require('url');
    // 获取user模块
    var User = require('./model-user');
    // 获取CURD模块
    var CURD = require('./node-sql');
    // 构造
    var curd = new CURD();
    
    http.createServer(function (req, res) {
        var parms = url.parse(req.url,true);
        var userName = parms.query.userName;
        var userPsw = parms.query.userPsw;
        console.log(userName + "<---||--->" + userPsw);
        //构造
        var user = new User(null,userName,userPsw);
        curd.check(user, function (result) {
            console.log("回调数据是:" + result);
            var resData = {
                msg:result
            };
            res.writeHead(200,{'Content-type':'text/plain;charset=utf-8'});
            res.end('callback('+JSON.stringify(resData)+')');
        });
    }).listen(8082);

    这里注意check()使用了回调 callback,在connection.query()中发起回调,Node.js 大部分方法都是异步回调处理.

    前端界面和之前的一样,这里就截图看看吧

    如有不足之处请指出,谢谢

  • 相关阅读:
    Spring Boot 知识笔记(thymleaf模板引擎)
    Spring Boot 知识笔记(servlet、监听器、拦截器)
    Spring Boot 知识笔记(Filter过滤器)
    Spring Boot 知识笔记(全局异常)
    Spring Boot 知识笔记(配置文件)
    Spring Boot 知识笔记(热部署)
    Spring Boot 知识笔记(创建maven项目、HTTP接口)
    正则表达式回溯漏洞
    HSTS的来龙去脉
    CAS单点登录详细流程
  • 原文地址:https://www.cnblogs.com/linwen5723/p/7753902.html
Copyright © 2020-2023  润新知