NodeJs学习日志(2):windows安装使用node.js 安装express,suquelize,mysql,nodemon

windows安装使用node.js 安装express,suquelize,mysql,nodemon

系统是win10,默认已经安装好nodejs与npm

包名作用
expressWeb应用框架
suquelize数据库ORM
mysql数据库
nodemon代码热重载

安装express

  1. 添加express生成器
npm add express-generator@4

在这里插入图片描述

  1. 安装express
npm add express 

在这里插入图片描述

  1. 创建项目
在当前项目创建express 文件
npx  express --no-view .

创建项目初始化项目,项目名称是: projectName
npx  express --no-view projectName

--no-view创建无视图项目

在这里插入图片描述

安装sequelize-cli与sequelize

  1. 安装sequelize-cli全局安装
全局安装
npm i -g sequelize-cli
或者本地
npm i  sequelize-cli

在这里插入图片描述

  1. 安装sequelize并初始化
npm install sequelize  
npx sequelize  init

在这里插入图片描述在这里插入图片描述

mysql

本机安装

当然也是我写的
https://blog.youkuaiyun.com/GoodCooking/article/details/149616098

docker安装

复制docker-compose.yml

services:
  mysql:
    image: mysql
    container_name: my_mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydatabase
    ports:
      - "45326:3306"
    volumes:
      - ./mysql:/var/lib/mysql
在yml文件的同级运行命令
docker-compose up -d

在这里插入图片描述

命令解释
services:
  mysql:

定义了一个名为 mysql 的服务(容器)。

    image: mysql

使用官方 [MySQL Docker 镜像]

    container_name: my_mysql

将容器命名为 my_mysql(默认会生成随机名称,这里显式指定)。

    restart: unless-stopped
 `unless-stopped` 表示容器会自动重启,除非用户手动停止它。

    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mydatabase
  • MYSQL_ROOT_PASSWORD: 设置 MySQL root 用户的密码为 root(生产环境应使用更强的密码)。
  • MYSQL_DATABASE: 容器启动时自动创建名为 mydatabase 的数据库。
    ports:
      - "45326:3306"
-将主机的 `45326` 端口映射到容器的 `3306` 端口(MySQL 默认端口)。
  • 外部可通过 localhost:45326主机IP:45326 访问 MySQL。
    volumes:
      - ./mysql:/var/lib/mysql
  • 将主机的 ./mysql 目录挂载到容器的 /var/lib/mysql(MySQL 数据存储路径)。
    • 确保数据持久化,即使容器删除,数据仍保留在主机中。
建议运行位置

在这里插入图片描述在这里插入图片描述
clwy-api 是node的项目名称,里面有app.js
docker_File 存放docker文件

可视化创建数据库

如果使用的是docker则已经创建了一个数据库,名称是:mydatabase,如果本机安装则使用其他工具链接到数据库
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

有数据库
在这里插入图片描述
在这里插入图片描述

修改文件用于连接到数据库

修改config.config.json
在这里插入图片描述
安装mysql2

npm add mysql2

在这里插入图片描述
在models下的index.js 添加测试连接代码

'use strict';

const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const process = require('process');
const basename = path.basename(__filename);
const env = process.env.NODE_ENV || 'development';
const config = require(__dirname + '/../config/config.json')[env];
const db = {};

let sequelize;
if (config.use_env_variable) {
  sequelize = new Sequelize(process.env[config.use_env_variable], config);
} else {
  sequelize = new Sequelize(config.database, config.username, config.password, config);
}

// 添加连接测试
sequelize.authenticate()
  .then(() => {
    console.log('MySQL 连接已成功建立');
  })
  .catch(err => {
    console.error('无法连接到 MySQL 数据库:', err);
    process.exit(1); // 如果连接失败,退出进程
  });


fs
  .readdirSync(__dirname)
  .filter(file => {
    return (
      file.indexOf('.') !== 0 &&
      file !== basename &&
      file.slice(-3) === '.js' &&
      file.indexOf('.test.js') === -1
    );
  })
  .forEach(file => {
    const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
    db[model.name] = model;
  });

Object.keys(db).forEach(modelName => {
  if (db[modelName].associate) {
    db[modelName].associate(db);
  }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

  1. 打开app.js,在
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

上面添加
require('./models');

在这里插入图片描述

nodemon

  1. 安装nodemon
 npm install --save-dev nodemon

在这里插入图片描述

  1. 修改根目录package.json
根目录package.json修改:
"scripts": {
  "start": "node app.js",
  "dev": "nodemon app.js",
  "test": "echo \"Error: no test specified\" && exit 1"
}

在这里插入图片描述

  1. 启动程序
开发模式运行
npm run dev

生产模式
npm start

  1. 访问
    在这里插入图片描述

  2. 修改返回文件,将index.html重命名为index2.html
    在这里插入图片描述

  3. 修改routes下的index.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  // res.render('index', { title: 'Express' });
  res.json({ "java": "script" });
});

module.exports = router;

在这里插入图片描述

其他包

包名功能描述安装状态
expressWeb框架已安装
sequelizeORM数据库工具已安装
nodemon代码热重载已安装
sqlitesqlite支持已安装
bcryptjs密码加盐哈希未安装
dotenv环境变量管理未安装
jsonwebtokenJWT令牌生成未安装
moment时间日期处理未安装
cors跨域支持未安装
multer文件上传中间件未安装
svg-captcha图形验证码生成未安装
nodemailer邮件发送服务未安装
winston日志记录工具未安装
redisRedis客户端未安装
amqplibRabbitMQ客户端未安装
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值