应用node+express+mysql 实现简单的增删改查
记录下来备忘
1、准备好webstrom编辑器,编辑器调整字体大小等在file->settings->editor下设置 注册码 来源网上:
2017.2.27更新
选择“license server” 输入:http://idea.imsxm.com/
2、准备好 mysql 因为我本机有安装xampp 所以不需要单独准备mysql数据库 如果没有需要安装,安装了mysql的Navicat Premium管理工具。
3、查看下本机node和express是否安装 版本node -v express --version
4 、打开webstrom新建工程File->New->Project->nodejs
手动更改views下支持的模板文件格式,现在views下都是ejs文件,修改 app.js
app.set('views', path.join(__dirname, 'views'));
var template = require('art-template');
template.config('base', '');
template.config('extname', '.html');
app.engine('.html', template.__express);
app.set('view engine', 'html');
这期中有个坑,安装art-template 需要安装art-template 3.0.3 默认安装4以上版本 会出现template.config不是函数的错误
可能art-template 4 换其他的方法了。
新建数据库 略过
在routes下新建db.js 连接数据库
//db.js
//连接mysql
var mysql = require('mysql');
var pool = mysql.createPool({
host:'localhost',
user:'root',
password:'',
database:'testdb'
}) function query(sql, callback) {
pool.getConnection(function (err, connection) {
// Use the connection
connection.query(sql, function (err, rows) {
callback(err, rows);
connection.release();//释放链接
});
});
}
exports.query = query;
在views下新建users.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{title}}</title>
</head>
<body>
<form method="post" action="/users/search">
姓名:<input type="text" value="{{s_name}}" name="s_name">
年龄:<input type="text" value="{{s_age}}" name="s_age">
<input type="submit" value="查询">
</form> <table>
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>操作</th>
</tr>
{{each datas as value index}}
<tr>
<td>{{value.id}}</td>
<td>{{value.name}}</td>
<td>{{value.age}}</td>
<td><a href="/users/add">新增</a></td>
<td><a href="/users/del/{{value.id}}">删除</a></td>
<td><a href="/users/toUpdate/{{value.id}}">修改</a></td>
</tr>
{{/each}}
</table>
</body>
</html>
在routes下新建user.js
var express = require('express');
var router = express.Router(); var db = require('./db.js');
/* GET users listing. */
router.get('/', function(req, res, next) {
db.query('select * from userinfo',function(err,rows){
if(err){
res.render('users',{title:'Express',datas:[]});
}else{
res.render('users',{title:'Express',datas:rows});
}
})
}); //新增
router.get('/add',function(req,res){
res.render('add');
})
router.post('/add',function(req,res){
var name = req.body.name;
var age = req.body.age;
db.query("insert into userinfo(name,age) values ('"+name+"',"+age+")",function(err,rows){
if(err){
res.end("新增失败");
}else{
res.redirect('/users');
}
});
})
//删除
router.get('/del/:id',function(req,res){
var id = req.params.id;
db.query("delete from userinfo where id="+id,function(err,rows){
if(err){
res.end("删除失败" + err);
}else{
res.redirect("/users");
}
})
})
//修改
router.get('/toUpdate/:id', function (req, res) {
var id = req.params.id;
db.query("select * from userinfo where id=" + id, function (err, rows) {
if (err) {
res.end('修改页面跳转失败:' + err);
} else {
res.render("update", {datas: rows}); //直接跳转
}
});
});
router.post('/update', function (req, res) {
var id = req.body.id;
var name = req.body.name;
var age = req.body.age;
db.query("update userinfo set name='" + name + "',age='" + age + "' where id=" + id, function (err, rows) {
if (err) {
res.end('修改失败:' + err);
} else {
res.redirect('/users');
}
});
}); //查询
router.post('/search', function (req, res) {
var name = req.body.s_name;
var age = req.body.s_age; var sql = "select * from userinfo"; if (name) {
sql += " and name='" + name + "' ";
} if (age) {
sql += " and age=" + age + " ";
}
sql = sql.replace("and","where");
db.query(sql, function (err, rows) {
if (err) {
res.end("查询失败:", err)
} else {
res.render("users", {title: 'Express', datas: rows, s_name: name, s_age: age});
}
});
});
//
module.exports = router;
新增页面add.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>新增页面</title>
</head>
<body>
<form action="/users/add" method="post">
姓名:<input type="text" name="name"><br>
年龄:<input type="text" name="age"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
修改页面 update.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>修改页面</title>
</head>
<body>
<form action="/users/update" method="post">
<input type="hidden" value="{{datas[0].id}}" name="id">
姓名:<input type="text" name="name" value="{{datas[0].name}}"><br>
年龄:<input type="text" name="age" value="{{datas[0].age}}"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
可以简单遍历数据库字段到页面。
参考 http://www.cnblogs.com/zhengyeye/p/nodejs.html 感谢原作者
应用node+express+mysql 实现简单的增删改查的更多相关文章
- 使用 NodeJS+Express+MySQL 实现简单的增删改查
关于node.js暂时记录如下,以后有时间一定学习 文章来自简书,作者:sprint,2016-07 使用 Node.js + Express+MySQL 实现简单的增删改查 https://www. ...
- 利用Express+MySQL进行简单的增删改查
前言: 随着JavaScript语言的快速发展,其功能越来越强大,能做的事情也越来越多. 目前,web前端工程师能够利用NodeJS搭建服务,也成为了越来越多互联网公司对前端开发的硬性要求. 本文主要 ...
- python操作三大主流数据库(2)python操作mysql②python对mysql进行简单的增删改查
python操作mysql②python对mysql进行简单的增删改查 1.设计mysql的数据库和表 id:新闻的唯一标示 title:新闻的标题 content:新闻的内容 created_at: ...
- 基于nodejs+express+mysql+webstorm+html的 增删改查
一.工具准备 Nodejs框架,WebStorm.Mysql服务.Navicat.此篇文章只讲项目的搭建过程,至于Nodejs,WebStorm.Mysql的下载.安装与配置网上资源很多,请自行查阅, ...
- Node.js + MySQL 实现数据的增删改查
通过完成一个 todo 应用展示 Node.js + MySQL 增删改查的功能.这里后台使用 Koa 及其相应的一些中间件作为 server 提供服务. 初始化项目 $ mkdir node-cru ...
- mysql实现简单的增删改查,放入xmapp自带数据库中
1.mysql概念:SQL-Structured Query Language,是一种特殊的语言,专用于操作关系型数据库服务器中的数据,所有的SQL语句分为四类: (1)DDL(2)DQL(3)DML ...
- python之MySQL学习——简单的增删改查封装
1.增删改查封装类MysqlHelper.py import pymysql as ps class MysqlHelper: def __init__(self, host, user, passw ...
- 通过JDBC进行简单的增删改查(以MySQL为例) 目录
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
- Java通过JDBC进行简单的增删改查(以MySQL为例)
Java通过JDBC进行简单的增删改查(以MySQL为例) 目录: 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JD ...
随机推荐
- iOS应用架构谈part3 网络层设计方案
前言 网络层在一个App中也是一个不可缺少的部分,工程师们在网络层能够发挥的空间也比较大.另外,苹果对网络请求部分已经做了很好的封装,业界的AFNetworking也被广泛使用.其它的ASIHttpR ...
- UICollectionView实现无限轮播
#import "KGNewsController.h"#import "KGNewsCell.h"#import "KGNews.h"#i ...
- 【Python学习之七】面向对象高级编程——__slots__的使用
1.Python中的属性和方法的绑定 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法. (1)首先,定义一个class: class Stu ...
- jquery图片切换插件jquery.cycle.js参数详解
转自:国人的力量 blog.163.com/xz551@126/blog/static/821257972012101541835491/ 自从使用了jquery.cycle.js,我觉得再也不用自己 ...
- 事务控制语言DTL
一.什么是事务? · 数据库中的事务,是指可以将“多条相关语句执行”看做是“一条语句执行”的一种内部机制.即事务是一种可以保证“多条语句一次性执行完成”或者一条语句都不执行的机制. 三.事务的特点 原 ...
- php生成zip压缩文件的方法,支持文件和压缩包路径查找
/* * new creatZip($_dir,$_zipName); *@ _dir是被压缩的文件夹名称,可使用路径,例 'a'或者'a/test.txt'或者'test.txt' *@ _zipN ...
- leetcode-21-knapsack
322. Coin Change Write a function to compute the fewest number of coins that you need to make up tha ...
- LeetCode(304)Range Sum Query 2D - Immutable
题目 Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper ...
- Shuffle UVA - 12174 尺取法
题目:题目链接 思路:见紫书,对具体操作方式还不是很理解,代码是从一个题解里看的,以后多回顾下,需要理解 代码: #include <iostream> #include <cstr ...
- Python之code对象与pyc文件(一)
Python程序的执行过程 我们都知道,C语言在执行之前需要将源代码编译成可执行的二进制文件,也就是将源代码翻译成机器代码,这种二进制文件一旦生成,即可用于执行.但是,Python是否一样呢?或许很多 ...