Nodejs+MySQL+Express+微信小程序
Express+nodejs+mysql+微信小程序
前端
这次主要是学习前后端交互等功能,对前端界面要求不多,仅一个按钮。
按钮绑定的事件名称为login,下面看一下js代码:
// index.js Page({ data: { UserInfo: { } }, login() { console.log("点击登录"); wx.getUserProfile({ desc: desc, lang: "zh_CN", success: (result) => { console.log(result.userInfo); this.setData({ UserInfo: result.userInfo }) wx.login({ success: (result) => { wx.request({ url: http://127.0.0.1:3000/login, method: "GET", data: { code: result.code }, success: (result) => { console.log(result) wx.request({ url: http://127.0.0.1:3000/login/postUserInfo, data: this.data.UserInfo, method: POST, success: (result) => { console.log("上传成功"); } }) } }) } }) } }) } })
后端
package的配置和依赖
{ "name": "tougao", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www", "devstart": "nodemon ./bin/www" }, "dependencies": { "body-parser": "^1.20.0", "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "http-errors": "~1.6.3", "jade": "~1.11.0", "morgan": "~1.9.1", "mysql": "^2.18.1", "request": "^2.88.2" }, "devDependencies": { "nodemon": "^2.0.16" } }
先看一下依赖文件:
-
nodemon:服务器自动刷新功能 body-parse:处理POST请求 request:像其他服务器发送请求 express:WEB框架 mysql:数据库
再看脚本文件:
值得注意的就一个devstart,主要是用来进行nodemon自动刷新的
app.js文件
var createError = require(http-errors); var express = require(express); var path = require(path); var cookieParser = require(cookie-parser); var logger = require(morgan); var bodyParser = require(body-parser) var indexRouter = require(./routes/index); var usersRouter = require(./routes/users); var loginRouter = require(./routes/login) var app = express(); // view engine setup app.set(views, path.join(__dirname, views)); app.set(view engine, jade); app.use(bodyParser.urlencoded({ extended:false})); app.use(bodyParser.json()); app.use(logger(dev)); app.use(express.json()); app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, public))); app.use(/, indexRouter); app.use(/users, usersRouter); app.use(/login,loginRouter) // catch 404 and forward to error handler app.use(function(req, res, next) { next(createError(404)); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get(env) === development ? err : { }; // render the error page res.status(err.status || 500); res.render(error); }); module.exports = app;
其中自己添加的代码如下:
var bodyParser = require(body-parser) var loginRouter = require(./routes/login) app.use(bodyParser.urlencoded({ extended:false})); app.use(bodyParser.json()); app.use(/login,loginRouter)
作用也很明显,分别为导入插件、导入路由、使用插件和路由。
其中就一个login路由。
路由login的设置
代码主要分为四个部分:
- 导入组件
- 设置全局变量
- 监听GET请求:获取用户UNIONID
- 监听POST请求:上传用户数据,并保存在数据库中
代码也简介明了。
数据库API的设置
const mysql = require(mysql) //创建连接 const conn = mysql.createConnection({ host: localhost, port: 3306, user: root, password: 你的密码, database: 你的数据库 }) //连接mysql conn.connect((err) => { if (err) { console.log(err) return; } console.log(数据库链接成功!) }) function add_data(userData){ var addSql = INSERT INTO userInfo(UnionId,name,avatar) VALUES(?,?,?); var addSqlParams = [userData.UnionId,userData.name,userData.avatar]; console.log(addSqlParams); conn.query(addSql,addSqlParams,(err,res)=>{ if(err){ console.log(err.message); return; } console.log(INSERT OK!+res); }) conn.end(); } module.exports={ add_data }
这是自己新学习到的,分别是数据库的连接、通过语句进行操作。
总结
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
微信小程序 获取用户的昵称和头像