一,新建项目
首先打开HBuilder----文件----新建----项目----创建
二,安装脚手架
在项目“test1”上右击鼠标----使用命令行窗口打开所在项目----打开test1终端
然后在test1终端输入如下指令
npm i express-generator -g
enter键,效果如下:
三.创建Server文件夹
在test1终端输入如下指令
express --view=ejs server
enter键,效果如下:
执行成功后会出现“Server”文件夹,如下图:
Server的名字可以自定义
四.安装依赖
在“server”文件上,右击鼠标----使用命令行窗口打开所在项目----打开server终端
在server终端输入如下指令
npm install
enter键,效果如下:
接下来安装MySQL的依赖,依旧是回到test1终端下,依次执行:
npm init -y
npm i mysql
执行成功后,模块中会出现MySQL目录:
五.启动服务
在server终端,执行如下命令:
npm start
打开浏览器,访问如下地址:http://localhost:3000/
如上,访问成功。
六.连接MySQL数据库
如下,在server下新建database目录和sql.js 文件
在sql.js中书写数据库连接信息:
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost', //host地址
port:3306, //端口号
user: 'root', //连接数据库时的账号
password: '123456',//连接数据库时的密码
database: 'db1' //需要连接的数据库
});
module.exports = connection;
注意:user:'root'//数据库的用户名,一般都为root,可在Navicat中查看。
password:'123456' //输入自己数据库的密码
database:'db1' //数据库的名字
七.编写后端业务
键入到routes目录下的index.js文件中:
var express = require('express');
var router = express.Router();
var connection = require('../database/sql.js')
/* GET home page. */
router.get("/showadv", function(req, res, next) {
connection.query('SELECT * from adv', function(error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results);
res.send(results)
});
});
module.exports = router;
注意:
八.前端调用后端
回到index.vue中,在onload方法中书写请求——即当页面加载完成时,会查询到adv表中的全部数据:
onLoad() {
uni.request({
url: "http://localhost:3000/showadv",
method: 'get',
success: res => {
console.log(res.data);
}
})
}
注意:
adv表数据如下:
运行(记得重新通过npm start启动服务器!)
如果出现连接数据库的时候出现报错,如:
node.js连接mysql出现错误: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
可能是因为版本问题。
解决办法:
1、找到MYSQL的安装路径下的bin目录,这里是:C:\Program Files\MySQL\MySQL Server 8.0\bin,然后在命令行工具进入,如下图
2、登录mysql数据库。即继续在命令行工具输入:mysql -u root -p
。然后输入自己数据库的密码,进入数据库
3、接着输入 :
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
上面'123456'换成自己的密码。
4、最后在输入下面这个命令,然后回车。
FLUSH PRIVILEGES;
然后就可以连接上数据库了。