设为首页 收藏本站
查看: 938|回复: 0

[经验分享] express实现前后端通信上传图片,存储数据库(mysql)傻瓜教程(二)

[复制链接]

尚未签到

发表于 2017-2-23 11:43:56 | 显示全部楼层 |阅读模式
  今天继续昨天的教程,昨天已经完成了express的安装和图片的上传功能,相信各位看官收获颇丰,有什么问题的请直接指出,欢迎大家指正^_^。
  附上上篇的链接:http://www.cnblogs.com/wunan/p/express.html
  数据库如标题,使用开源的mysql为基础,我是下载的解压版本(自行百度就有,用百度下载的就行),配置过程http://blog.csdn.net/ccf19881030/article/details/9247235,
  本人在安装过程中,对于配置my.ini文件着实找了好久的教程,所以贴上本人的my.ini文件



[mysqld]
basedir="D:/MySql"     
datadir="D:/MySql/data"
port = 3306
socket = "/tmp/mysql.sock"
[client]
password =
port = 3306
socket = "/tmp/mysql.sock"
default-character-set = utf8
  可以看到我的mysql是安装在Mysql文件夹下的,大家可以按照自己的路径进行修改。
  然后在bin文件夹下运行



mysqld -install
  安装mysql服务,然后启动服务。



net start mysql
DSC0000.png

  上面的配置mysql教程链接中有navicat for mysql的下载地址(是mysql的可视化工具),还有注册的信息,不想打命令行的同学可以下载使用,更加方便些。
  第一次登陆数据库



mysql -uroot -p
  直接回车,没有密码。
  (ps:我在使用中手动填写数据库时,输入中文时会有乱码问题,解决方案如下:右键一个数据库,然后选择数据库属性,修改字符集为utf8格式,整理选择第一个就行,如图:
DSC0001.png


  下面就要使用node连接数据库了。各位看官可以泡杯茶继续~。
  felixge/node-mysql是一个纯nodejs的用javascript实现的一个MySQL客户端程序。felixge/node-mysql封装了Nodejs对MySQL的基本操作,100% MIT公共许可证。
  项目地址:https://github.com/felixge/node-mysql
  在项目中安装node-mysql,进入昨天建立好的myapp文件夹,运行:



npm install mysql
  接下来进行测试,把官网的例子修改下,放到咱们的项目里面,修改routes/index.js,重启express



var express = require('express');
var router = express.Router();var mysql = require('mysql'); //调用MySQL模块

router.get('/', function(req, res) {
res.render('index', {
title: '孟星魂'
});
//创建一个connection
var connection = mysql.createConnection({
host: '127.0.0.1', //主机
user: 'root', //MySQL认证用户名
password: '111', //MySQL认证用户密码,没有测试没有密码时为空是否能登陆,不能的话设置下登陆密码
port: '3306', //端口号
database: 'nodesample'
});
//创建一个connection
connection.connect(function(err) {
if (err) {
console.log('[query] - :' + err);
return;
}
console.log('[connection connect]  succeed!');
});
//执行SQL语句
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) {
console.log('[query] - :' + err);
return;
}
console.log('The solution is: ', rows[0].solution);
});
//关闭connection
connection.end(function(err) {
if (err) {
return;
}
console.log('[connection end] succeed!');
});
});
module.exports = router;

  打开页面后,命令符显示效果如下:
DSC0002.png

  测试成功!!,下面建立测试数据库



CREATE DATABASE IF NOT EXISTS nodesample CHARACTER SET UTF8;
USE nodesample;
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
`Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`UserName` varchar(64) NOT NULL COMMENT '用户名',
`UserPass` varchar(64) NOT NULL COMMENT '用户密码',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';
  这段代码可以直接在navicat里面运行,点击工具,console,粘贴,回车就好了。
  接下来往数据库中添加一条数据,修改routes/index.js,如下



var express = require('express');
var router = express.Router();
var mysql = require('mysql'); //调用MySQL模块

router.get('/', function(req, res) {
res.render('index', {
title: '孟星魂'
});
//创建一个connection
var connection = mysql.createConnection({
host: '127.0.0.1', //主机
user: 'root', //MySQL认证用户名
password: '111', //MySQL认证用户密码
port: '3306', //端口号
database: 'nodesample'
});
//创建一个connection
connection.connect(function(err) {
if (err) {
console.log('[query] - :' + err);
return;
}
console.log('[connection connect]  succeed!');
});
//执行SQL语句
var userAddSql = 'INSERT INTO userinfo(Id,UserName,UserPass) VALUES(0,?,?)';
var userAddSql_Params = ['Wilson', 'abcd'];
//增
connection.query(userAddSql, userAddSql_Params, function(err, result) {
if (err) {
console.log('[INSERT ERROR] - ', err.message);
return;
}
console.log('--------------------------INSERT----------------------------');
//console.log('INSERT ID:',result.insertId);        
console.log('INSERT ID:', result);
console.log('-----------------------------------------------------------------\n\n');
});
//关闭connection
connection.end(function(err) {
if (err) {
return;
}
console.log('[connection end] succeed!');
});
});

module.exports = router;
  重启express,刷新页面,命令符显示:
DSC0003.png

  数据库显示:
DSC0004.png

  好了,现在大家已经可以操作数据库了,基本的一些操作请参考http://www.cnblogs.com/zhongweiv/p/nodejs_mysql.html#mysql_mod,增删改查里面都有介绍。

  后面应该是介绍大家上传的图片存储数据库的,但遇到了一些坑,才解决,最精彩的留在明天~,
  主要是路由的问题,主页请求了模板,这个时候是无法在往前端发送数据的,所以会用到express的中间件,大家晚安~。
  欢迎任何形式的转载,但请务必注明原文详细链接

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-346202-1-1.html 上篇帖子: React-Native入门指导之iOS篇 —— 一、准备工作 下篇帖子: node js学习(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表