nodejs学习(一)nodejs+mysql搭建简单服务
nodejs学习(二)nodejs+mysql简单登录注册
nodejs学习(三)nodejs跨域
nodejs学习(四)nodejs图片上传以及设置静态文件访问路径
一、项目搭建
- 通过
npm init
命令为你的应用创建一个 package.json 文件。 - 安装express,node最常用的框架,
npm i express
- 安装sequelize库,和mysql驱动程序
npm i sequelize mysql2
sequelize是一个orm框架,什么是orm呢?即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了。
写一个测试demo, 新建index.js文件
安装const express = require('express') const app = express() app.listen(4000, () => { console.log('serve is running on port:4000') })
nodemon
npm install nodemon -D # 加-D是指在开发环境中安装。
nodemon index.js
nodemon软件会自动监测文件的变化,当有变化时重新启动服务。效果如图
二、连接mysql数据库
- 新建database文件夹,在database文件夹下创建init.js文件
// 引入sequelize const { Sequelize } = require('sequelize') const Sqeuelize = require('sequelize') /** * @param 数据库名称 * @param 用户名 * @param 密码 */ const sequelize = new Sequelize('node', '数据库账号' ,'数据库密码', { host: '数据库地址', port: '3306', dialect: 'mysql' }) // 测试连接 sequelize .authenticate() .then(() => { console.log('Connection has been established successfully.'); }) .catch(err => { console.error('Unable to connect to the database:', err); }); module.exports = { Sequelize, sequelize}
- index.js文件中引入init.js,运行测试结果如下
require('./database/init')
三、新建表user文件
-
database文件夹下席间modules文件夹,并在modules文件夹下创建user.js文件
const {Sequelize, sequelize} = require('../init.js') /** * * @params 表明 * @params 参数 * */ const User = sequelize.define('user', { username: { type: Sequelize.STRING, validate: { // 验证 notEmpty: true // 非空 } }, password: { type: Sequelize.STRING, validate: { notEmpty: true } } }) User.sync().then(() => { console.log('user表模型已经同步') })
运行结果如下
[nodemon] restarting due to changes... [nodemon] starting `node index.js` serve is running on port:4000 Executing (default): SELECT 1+1 AS result Executing (default): CREATE TABLE IF NOT EXISTS `users` (`id` INTEGER NOT NULL auto_increment , `username` VARCHAR(255), `password` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB; Connection has been established successfully. Executing (default): SHOW INDEX FROM `users` user表模型已经同步
如果还未创建表,将会自动创建,如图
四、简单get请求测试
- 根目录新建router文件夹,router文件夹下创建user.js文件
const express = require('express') const router = express.Router() router.get('/test', (req, res) => { res.send({ msg:'test' }) }) module.exports = router
- index.js中
const router = require('./router/user') app.use(express.urlencoded({extended: false})) // 请求体中的数据会以普通表单形式(键值对)发送到后端 app.use(express.json({extended: false})) // 请求体中的数据会以json字符串的形式发送到后端 app.use('/user', router)
- postman测试