mysql实现restful风格的增加和删除改查示例,mysql数据库学习目录

前方的话

  对于前端程序猿来讲,数据库并不是重中之重技巧点,不过基本的增加和删除改查操作照旧必要掌握的。大火柴将mysql数据库的读书记录整理如下

 

前面的话

  对于前端程序猿来讲,数据库并不是根本技巧点,可是基本的增加和删除改查操作仍旧要求精通的。大火柴将mysql数据库的求学记录整理如下

 

前面的话

  对于前端程序猿来讲,数据库并不是任重(Ren Zhong)而道远手艺点,然则基本的增加和删除改查操作还是必要领悟的。小火柴将mysql数据库的就学记录整理如下

 

首先,放上项目github地址:

目录

  
 997755.com澳门葡京 ,前端学数据库之基础操作

  前端学数据库之数据类型

  前端学数据库之数据表操作

  mysql实现restful风格的增加和删除改查示例,mysql数据库学习目录。前端学数据库之记录操作

  前端学数据库之中文乱码

  前端学数据库之子查询

  前端学数据库之多表操作

  前端学数据库之函数

  前者学数据库之存款和储蓄

  前者学数据库之数据库设计

 

目录

  
 前者学数据库之基础操作

  前者学数据库之数据类型

  前者学数据库之数据表操作

  前端学数据库之记录操作

  前端学数据库之普通话乱码

  前端学数据库之子查询

  前端学数据库之多表操作

  前端学数据库之函数

  前端学数据库之存储

  前者学数据库之数据库设计

 

目录

  
 前者学数据库之基础操作

  前者学数据库之数据类型

  前者学数据库之数据表操作

  前端学数据库之记录操作

  前端学数据库之中文乱码

  前者学数据库之子查询

  前者学数据库之多表操作

  前者学数据库之函数

  前端学数据库之存款和储蓄

好的代码像粥一样,都是用时间熬出来的

转载

一、前言

前面学的java,一向用的ssm框架写后台。上一个月接触到node.js,于是花了二日时间学了须臾间node.js并写了3个CRUD简单示例。由于前日一贯学用github
pages搭建博客,一直没时间写README,前几天有空补了上去。

上边来内容自于项目的README。

二、项目介绍

依赖node.js + express + mysql达成的restful风格的CRUD轻巧示例

贰.一 组织结构

├── app.js -- 应用配置
├── bin
│   └── www -- 项目运行脚本
├── conf 
│   └── mysqlConf.js -- mysql配置文件
├── dao
│   ├── userDAO.js -- 封装和数据库的交互
│   └── userSqlMap.js -- SQL语句封装
├── model
│   └── result.js -- 返回结果对象封装
├── package.json -- 依赖模块
├── project-datamodel
│   └── user.sql -- 数据库脚本
├── public -- 前端静态页面
│   ├── add.html
│   ├── css
│   │   └── style.css
│   ├── detail.html
│   ├── index.html
│   └── modify.html
└── routes
    └── users.js -- 用户操作路由及业务逻辑

二.2 模块依赖

www -> app.js -> users.js ->  userDAO.js -> mysqlConf.js & userSqlMap.js

2.3 才能选型

后端技巧

  • node.js
  • express

前者技巧

  • angular.js

三、情况搭建

  • node.js:
  • mysql:

四、项目周转

  1. 下载代码并配置

git clone https://github.com/codethereforam/express-mysql-demo.git
cd express-mysql-demo && npm install   #安装部署依赖的包
  1. 新建express-mysql-demo数据库,导入project-datamodel文件夹下的user.sql

  2. 修改conf/mysqlConf.js中数据库配置音讯

  3. 启动

# 切换到项目根路径
npm start
  1. 开发首页:

5、开垦进度及代码分析

至于restful,可参考阮壹峰的两篇小说:

  • 理解RESTful架构
  • RESTful API
    设计指南

自家利用的IDE是IDEA,安装”NodeJS”插件后千家万户点击

File -> New Project -> Node.js and NPM -> Node.js Express App

IDEA暗中认可使用express-generator生成项目社团。

新建数据库”express-mysql-demo”:

create database `express-mysql-demo`;

新建user表:

CREATE TABLE `express-mysql-demo`.`user` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(45) NOT NULL,
  `password` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`id`))
DEFAULT CHARACTER SET = utf8mb4;

表结构:

+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| username | varchar(45)      | NO   |     | NULL    |                |
| password | varchar(45)      | NO   |     | NULL    |                |
+----------+------------------+------+-----+---------+----------------+

mysql配置文件conf/mysqlConf.js:

module.exports = {
    mysql: {
        host: 'localhost',
        user: 'root',
        password: '',
        database:'express-mysql-demo',
        // 最大连接数,默认为10
        connectionLimit: 10
    }
};

SQL语句封装模块dao/userSqlMap.js:

var userSqlMap = {
    add: 'insert into user(username, password) values(?, ?)',
    deleteById: 'delete from user where id = ?',
    update: 'update user set username=?, password=? where id=?',
    list: 'select * from user',
    getById: 'select * from user where id = ?'
};

打包重回结果对象model/result.js:

exports.createResult = function(success, data) {
    var result = {};
    result.success = success;
    result.data = data;
    return result;
};

自家那边运用了工厂方法创设结果对象,对象有四个天性,success代表用户操作成功或停业,data存放后台要赶回的多少。

上面分析修改用户部分新闻的有关代码,全体的增加和删除改查代码请将项目clone下来翻看。

包装和数据库的竞相模块dao/userDAO.js:

var pool = mysql.createPool(mysqlConf.mysql);
module.exports = {
     getById: function (id, callback) {
        pool.query(userSqlMap.getById, id, function (error, result) {
            if (error) throw error;
            console.log(result[0]);
            callback(result[0]);
        });
    },update: function (user, callback) {
        pool.query(userSqlMap.update, [user.username, user.password, user.id], function (error, result) {
            if (error) throw error;
            callback(result.affectedRows > 0);
        });
    }
};

此处运用了连接池,重复使用数据库连接,而毋庸每实践二次CRUD操作就赢得、释放3次数据库连接,从而抓牢了对数据库操作的本性。

用户操作路由及落到实处业务逻辑routes/users.js:

/* patch users */
router.patch('/:id', function (req, res) {
    console.log('patch users called');
    userDAO.getById(req.params.id, function (user) {
        var username = req.body.username;
        if(username) {
            user.username = username;
        }
        var password = req.body.password;
        if(password) {
            user.password = password;
        }
        console.log(user);
        userDAO.update(user, function (success) {
            var r =  result.createResult(success, null);
            res.json(r);
        });
    });
});

router依照分化的HTTP请求方法和走访路线试行相应的回调函数,回调函数中先记下日志,然后检查用户传过来的数目,接着调用userDAO的呼应CRUD方法,最终回到2个JSON对象给前端。那里修改用户部分音讯对应HTTP方法是PATCH,而修改总体音讯对应的是PUT。

选拔配置app.js中布局用户操作相关的路由:

app.use('/users', users);

前端public/index.html中与后台交互的JS代码:

(function (window) {
            window.angular.module('list', [])
                .controller('listCtrl', function ($scope, $http) {                
                    $scope.doPatch = function (id) {
                        var data = JSON.stringify({
                            password: document.getElementById("pwd" + id).value
                        });
                        $http.patch("/users/" + id, data)
                            .then(function (response) {
                                console.debug(response.data.success);
                            }, function (err) {
                                alert(err);
                            });
                    };
                });
        })(window);

前者接纳angualr.js,ajax异步调用后端restful
API,然后解析后台重临的JSON对象在分界面上体现。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website