当前位置: 首页 > wzjs >正文

无锡seo网站建设费用建设网站网站多少钱

无锡seo网站建设费用,建设网站网站多少钱,网站开发服务内容,sem竞价代运营公司3.1 如何用 Node.js 连接 MySQL?你用过哪些 ORM? 面试官您好,我先介绍如何用 Node.js 连接 MySQL,然后补充我常用的 ORM 工具。 🔌 原生连接 MySQL 使用 mysql2 模块: npm install mysql2 const mysql …

3.1 如何用 Node.js 连接 MySQL?你用过哪些 ORM?

面试官您好,我先介绍如何用 Node.js 连接 MySQL,然后补充我常用的 ORM 工具。


🔌 原生连接 MySQL

使用 mysql2 模块:

npm install mysql2

const mysql = require('mysql2/promise');const pool = mysql.createPool({host: 'localhost',user: 'root',database: 'test',password: '123456',waitForConnections: true,connectionLimit: 10,
});async function queryUsers() {const [rows] = await pool.query('SELECT * FROM users');console.log(rows);
}

🛠 我用过的 ORM:

ORM 工具适用范围特点
SequelizeMySQL/PostgreSQL/SQLite常用于 Node.js 项目,支持关系定义、事务等
TypeORMNestJS(+ TypeScript)装饰器风格,强类型支持好,适合 Nest 项目
PrismaModern ORM自动生成 TS 类型,支持代码提示,开发效率高


3.2 Sequelize(或 TypeORM)如何实现一对多、多对多关系?

ORM 的关系映射是重点,我以 Sequelize 为例说明一对多、多对多怎么建模。


🔗 一对多(One-To-Many)

场景:一个用户有多个文章

User.hasMany(Post);   // 在 Post 中生成 userId 外键
Post.belongsTo(User); // 反向关系

查询:

User.findAll({ include: Post });


🔗 多对多(Many-To-Many)

场景:文章可以有多个标签,标签可以属于多个文章

Post.belongsToMany(Tag, { through: 'PostTags' });
Tag.belongsToMany(Post, { through: 'PostTags' });

ORM 自动生成中间表 PostTags,并能联表查询。


🧩 TypeORM 实现方式:

@Entity()
export class User {@OneToMany(() => Post, post => post.user)posts: Post[];
}@Entity()
export class Post {@ManyToOne(() => User, user => user.posts)user: User;
}

多对多:

@ManyToMany(() => Tag, tag => tag.posts)
@JoinTable()
tags: Tag[];

3.3 Redis 在全栈项目中常见用途有哪些?举例说明

Redis 是非常常见的中间件,我用它处理过缓存、限流、队列、会话等功能,下面我举几个常用场景:


📌 常见用途和示例:

用途示例
✅ 数据缓存用户信息、商品列表、排行榜缓存
✅ Session 管理登录状态存 Redis,支持多服务共享
✅ 分布式锁防止秒杀系统超卖、抢单并发
✅ 消息队列使用 Redis List 实现异步下单
✅ 访问限流IP 限流、接口防刷


示例:接口缓存

const key = `user:${userId}`;
const cached = await redis.get(key);if (cached) return JSON.parse(cached);const user = await db.query('SELECT * FROM users WHERE id = ?', [userId]);
await redis.setEx(key, 60, JSON.stringify(user)); // 缓存 1 分钟

3.4 如何实现缓存更新策略(如 Cache-Aside)?

面试官,我用过多种缓存策略,最常用的是 Cache-Aside,也叫旁路缓存。


🧠 Cache-Aside 模式:

  1. 读请求先查缓存,没有再查数据库,然后写入缓存;

  2. 写请求时,更新数据库,然后删除或更新缓存

// 读取
async function getUser(id) {const key = `user:${id}`;const cache = await redis.get(key);if (cache) return JSON.parse(cache);const user = await db.query('...');await redis.setEx(key, 300, JSON.stringify(user));return user;
}// 更新
async function updateUser(id, data) {await db.update('users', data);await redis.del(`user:${id}`); // 延迟写
}

✅ 其他策略(了解加分):

策略特点
Write-Through每次写数据库也写缓存
Write-Behind写操作先写缓存,后台再更新数据库
Cache-Aside应用控制缓存的读取和失效(最灵活)


3.5 如何处理事务?MySQL 事务是如何保证一致性的?

事务是后端开发的重中之重,关系到数据一致性。我以 Sequelize 和原生方式分别说明,并简要介绍事务四大特性。


🔁 Sequelize 中事务处理:

const t = await sequelize.transaction();try {await User.update(..., { transaction: t });await Order.create(..., { transaction: t });await t.commit();
} catch (err) {await t.rollback();
}

⚙ 原生 MySQL 示例(mysql2):

const conn = await pool.getConnection();
try {await conn.beginTransaction();await conn.query('UPDATE account SET balance = balance - 100 WHERE id=1');await conn.query('UPDATE account SET balance = balance + 100 WHERE id=2');await conn.commit();
} catch (err) {await conn.rollback();
}

✅ MySQL 的事务一致性靠什么保证?

ACID 四大特性:

特性含义
A 原子性要么全部成功,要么全部失败
C 一致性执行完事务后,数据从一个一致状态到另一个状态
I 隔离性多事务并发不互相干扰(通过隔离级别控制)
D 持久性提交后永久生效,断电也不丢失(靠 redo log)


🚧 MySQL 是如何实现事务的?

  • 使用 InnoDB 引擎

  • 依赖于 redo log(重做日志)undo log(回滚日志)

  • 控制隔离性通过设置 REPEATABLE READ, READ COMMITTED 等隔离级别。


✅ 总结:

问题编号技术点
3.1Node 连接 MySQL,使用 ORM(Sequelize / TypeORM)
3.2一对多、多对多关系映射与查询
3.3Redis 多场景应用:缓存、限流、队列等
3.4Cache-Aside 缓存策略的实现与代码演示
3.5事务操作方式 + MySQL ACID 原理


http://www.dtcms.com/wzjs/821237.html

相关文章:

  • 如何创建一个个人网站一家企业如何做网站推广
  • 做期货网站违法的吗网络制作网站
  • 如保做网站赢利北京网站设计网站设计公司价格
  • 手机交互网站如何把网站放在主机上
  • 门户网站 jsp如何建立一个学校网站
  • 建设档案员证书查询网站三合一网站建设推广
  • 新网站建设方案沭阳网站设计
  • 湖南北山建设集团网站郑州做手机网站建设
  • 母婴护理服务网站模板网站地图灰色效果的怎么做的
  • 网站建设的方法和技术湖北高速公路建设网站
  • seo按照搜索引擎的什么对网站设计师网站pintset
  • 吉林市网站建设公司部门设置
  • 义乌做网站公司哪家好长沙百度推广排名优化
  • 网站服务器ipwordpress 图片懒加载
  • 建设网站电话胶州网站建设哪里有
  • 成都做网站建设公司游戏网站有哪些
  • 怎么做审核网站24小时永久有效在线观看
  • 仿卢松松博客网站源码下载百度语音导航地图安装
  • 网站建站外包公司新网站如何做推广软文
  • 湖州集团网站建设郑州十大平面设计公司排名
  • 科技型中小企业服务平台seo高手是怎样炼成的
  • 房产网站建网站外发加工网费用大概多少
  • 整站优化 快速排名阜阳网站网站建设
  • 做网站动图的软件平面设计素材网站排行榜前十名
  • 苏州相城网站建设教育局网站建设管理工作意见
  • 外贸网站建设 三方登录进一步加强网站建设管理
  • 个人网站命名网站备案怎么更改吗
  • 临沂市建设局网站简介网上商城运营推广方案
  • 以前有个自助建设网站教育在线网站怎样做直播
  • 富阳设计网站wordpress 缓存清理