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

布吉做网站的公司关于网站建设的图片

布吉做网站的公司,关于网站建设的图片,商城是什么平台,qq小程序开发Sequelize介绍Sequelize是一个基于 promise 的 Node.js ORM, 目前支持Postgres、MySQL、MariaDB、SQLite 以及Microsoft SQL Server,有强大的事务支持,关联关系,预读和延迟加载,读取复制等功能。地址:https://www.sequ…

Sequelize介绍

Sequelize是一个基于 promise 的 Node.js ORM, 目前支持Postgres、MySQL、MariaDB、SQLite 以及Microsoft SQL Server,有强大的事务支持,关联关系,预读和延迟加载,读取复制等功能。地址:https://www.sequelize.cn/

node版本(v22.17.0),安装依赖:

npm install sequelize@6.37.7 --save

npm install  mysql2@3.14.2 --save

初始化Sequelize连接

sequelize.js

const { Sequelize } = require('sequelize');
// sequelize 实例
const sequelize = new Sequelize('database', 'root', '123456', {host: 'localhost',dialect: 'mysql',// 连接池pool: {max: 5, // 最大连接数量min: 0, // 最小连接数量acquire: 30000,idle: 10000   // 如果一个线程 10 秒钟内没有被使用过的话,那么就释放线程},logging: true // SQL日志
});// 测试数据库连接
(async () => {try {await sequelize.authenticate();console.log('数据库连接成功');} catch (error) {console.error('数据库连接失败', error);}
})();module.exports = sequelize;

执行测试是否连接成功:node sequelize.js

一对一(One-to-One)、一对多(One-to-Many)、多对多(Many-to-Many)

user.js

const { Sequelize } = require('sequelize');
const sequelize = require('./sequelize');// define  User  是 id,表示唯一
const User = sequelize.define('User', {id: {type: Sequelize.INTEGER, // 类型primaryKey: true, // 主键autoIncrement: true, // 是否允许自增comment: '主键'},name: {type: Sequelize.STRING(50),allowNull: false, // 是否允许为空unique: true, // 唯一comment: '用户名称'},age: {type: Sequelize.INTEGER,allowNull: false, // 是否允许为空comment: '年龄'},email: {type: Sequelize.STRING,comment: '用户邮箱'},status: {type: Sequelize.INTEGER,defaultValue: 1,comment: '用户状态'}
}, {sequelize,  // 传递连接实例tableName: 't_user', // 对应的数据库表comment: '用户表',      timestamps: false
});
module.exports = User;

user.js

const { Sequelize } = require('sequelize');
const sequelize = require('./sequelize');const Role = sequelize.define('Role', {id: {type: Sequelize.INTEGER, // 类型primaryKey: true, // 主键autoIncrement: true // 是否允许自增},roleName: {type: Sequelize.STRING(50),allowNull: false, // 是否允许为空field: "role_name"},
}, {sequelize, // 传递连接实例tableName: 't_role',// 对应的数据库表comment: '角色表',      timestamps: false
});module.exports = Role;

userRole.js,一个用户拥有多个角色,一个角色可以授权给多个用户,多对多关系。

const { Sequelize } = require('sequelize');
const sequelize = require('./sequelize');
const User = require("./user");
const Role = require("./role");const UserRole = sequelize.define('UserRole', {// id: {//     type: Sequelize.INTEGER, // 类型//     primaryKey: true, // 主键//     autoIncrement: true // 是否允许自增// },userId: {type: Sequelize.INTEGER,field: "user_id",references: {model: User,key: 'id',},},roleId: {type: Sequelize.INTEGER,field: "role_id",references: {model: Role,key: 'id',},},
}, {sequelize, // 传递连接实例tableName: 't_user_role', // 对应的数据库表comment: '用户角色表',timestamps: true
});// 用户有多个角色
User.belongsToMany(Role, {through: UserRole,          // 指定中间表foreignKey: "user_id",    // 本模型的外键otherKey: "role_id",       // 目标模型的外键
});// 角色可以授权多个用户
Role.belongsToMany(User, {through: UserRole,     // 指定中间表foreignKey: "role_id",    // 本模型的外键otherKey: "user_id",       // 目标模型的外键
});module.exports = UserRole;

order.js,一个用户拥有多个订单,一对多的关系。

const { Sequelize } = require('sequelize');
const sequelize = require('./sequelize');
const User = require("./user")const Order = sequelize.define('Order', {id: {type: Sequelize.INTEGER, // 类型primaryKey: true, // 主键autoIncrement: true // 是否允许自增},number: {type: Sequelize.STRING(50),allowNull: false, // 是否允许为空unique: true // 唯一},orderAmount: {type: Sequelize.DECIMAL,defaultValue: 0,field: "order_amount"},status: {type: Sequelize.INTEGER,defaultValue: 1}
}, {sequelize, // 传递连接实例tableName: 't_order',// 对应的数据库表comment: '订单表',timestamps: false
});// 一个用户有多个订单
User.hasMany(Order, {foreignKey: 'user_id'
});
// 订单属于用户
Order.belongsTo(User, {foreignKey: 'user_id'
});module.exports = Order;

profile.js,一个用户拥有自己的资料,一对一的关系。

const { Sequelize } = require('sequelize');
const sequelize = require('./sequelize');
const User = require("./user")const Profile = sequelize.define('Profile', {id: {type: Sequelize.INTEGER, // 类型primaryKey: true, // 主键autoIncrement: true // 是否允许自增},birthday: {type: Sequelize.DATE,allowNull: false, // 是否允许为空},work: {type: Sequelize.STRING(50),allowNull: false, // 是否允许为空},
}, {sequelize, // 连接实例tableName: 't_profile', // 对应的数据库表comment: '资料表',     timestamps: false
});// 一个用户有一个资料
User.hasOne(Profile, {foreignKey: 'user_id'
});
// 资料属于用户
Profile.belongsTo(User, {foreignKey: 'user_id'
});module.exports = Profile;

ddl.js,执行创建数据库表。

const sequelize = require('./sequelize');
const User = require("./user");
const Profile = require("./profile");
const Order = require("./order");
const UserRole = require("./userRole");async function createTables() {try {// 使用{ force: true }会删除旧表并重新创建新表(谨慎使用)await sequelize.sync({ force: true });// 使用以下方式仅创建不存在的表:// await sequelize.sync(); // 创建用户角色表// await UserRole.sync({ force: true });// 创建资料表// await Profile.sync({ force: true });// 创建订单表// await Order.sync({ force: true });console.log("User->", User === sequelize.models.User);console.log("Profile->", Profile === sequelize.models.Profile);console.log("Order->", Order === sequelize.models.Order);console.log("UserRole->", UserRole === sequelize.models.UserRole);} catch (error) {console.error('模型创建失败:', error);throw error;} finally {// 关闭数据库连接sequelize.close();}
}createTables().catch(err => console.error('Unable to sync database:', err));

http://www.dtcms.com/a/535768.html

相关文章:

  • 服务器运维(六)网站访问分析统计——东方仙化神期
  • 【Docker】定制化构建一个可以运行GaussDB的kylinv10sp3系统的docker镜像
  • 5分钟搭建云IDE!CodeServer+cpolar打造跨设备开发工作站
  • vmware和kali linux安装和搭建
  • 网络:网络层(IP协议)和数据链路层
  • DDS和SOMEIP区别以及应用场景
  • Lumi 具神智能机器人 SDK说明和ACT算法中的学习与推理
  • Rokid AR眼镜开发入门:构建智能演讲提词器Android应用
  • 量化指标解码03:布林带的开口收口策略与市场波动性分析
  • 深圳网站建设报价表廊坊建手机网站
  • 余姚网站推广wordpress多个域名
  • CSS引入方式(本文为个人学习笔记,内容整理自哔哩哔哩UP主【非学者勿扰】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)
  • SuperMap iObjects .NET 11i 二次开发(十六)—— 叠加分析之合并
  • 【Linux笔记】网络部分——传输层协议UDP
  • Ansible 自动化项目结构与 Harbor 安装示例(基于 kubeasz)①
  • Spring 源码学习(十五)—— HandlerMethodReturnValueHandler
  • everviz 数据可视化平台
  • 12 U盘挂载
  • 【Kylin Linux root 密码故障处置指南(超限重试 + 改回原密码)】
  • 网络原理:数据链路层、NAT与网页加载
  • 【从零开始开发远程桌面连接控制工具】01-项目概述与架构设计
  • 网站建设竞价托管什么意思在国内做推广产品用什么网站好
  • 有没有做宠物的网站网站开发中间商怎么做
  • 深度强化学习 | 详解从信赖域策略优化(TRPO)到近端策略优化(PPO)算法原理
  • 在类中定义装饰器:Python高级元编程技术详解
  • [C++][正则表达式]常用C++正则表达式用法
  • 基于大数据的短视频数据分析系统 Spark哔哩哔哩视频数据分析可视化系统 Hadoop大数据技术 情感分析 舆情分析 爬虫 推荐系统 协同过滤推荐算法 ✅
  • 参考抖音推荐算法的功能:不同用户规模的推荐技术框架
  • 深入理解C语言scanf函数:从基础到高级用法完全指南
  • 检测相邻递增子数组1 2(LeetCode 3349 3350)