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

Sequelize ORM 现有表如何使用

一、 在mysql中创建一个表 或者随便找一个现有的表

已经有了一张叫做xw_posts的表。表里的字段非常简单,大家可以自己建一下

CREATE TABLE `xw_posts` (`id` int unsigned NOT NULL AUTO_INCREMENT,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,`category_id` int DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;INSERT INTO `xw_posts` (`id`, `name`, `category_id`)
VALUES(1,'天生我材必有用',1),(2,'一天能吃三斤肉',2);

在这里插入图片描述

这张表的命名显然是不符合Sequelize规范的。
里面关联分类表的字段是下划线命名,也不符合命名规范。
而且里面还缺少createdAt和updatedAt时间字段。

二、项目中使用创建一个迁移模型生成模板,生成模型的时候,同时也会生成迁移文件。但是我们现在已经有数据表了,不需要再去建表了,所以将迁移文件直接删掉

sequelize model:generate --name Post --attributes category_id:integer,name:string

三、更改模板

1、模型的名字,我们叫做Post。这明显和数据表对不上,但是没关系,不要紧。增加tableName,指定好模型对应的表名即可。
Post.init({category_id: DataTypes.INTEGER,name: DataTypes.STRING
}, {sequelize,modelName: 'Post',tableName: 'xw_posts',    // 指定表名
});
2、另外我们这张表,没有时间字段,不需要createdAt和updatedAt,继续增加配置
Post.init({category_id: DataTypes.INTEGER,name: DataTypes.STRING
}, {sequelize,modelName: 'Post',tableName: 'xw_posts',    // 指定表名timestamps: false           // 不需要时间
});
3、设置关联外键

我们的Post模型,它与是属于分类的。但是关联字段叫做category_id(默认关联字段为:post_id),明显也不符合默认关联字段的命名。没有关系,定义一个一对多关联,只需要用foreignKey定义一下,关联的字段叫什么名字就可以了。

static associate(models) {// define association heremodels.Post.belongsTo(models.Category, { foreignKey: 'category_id', as: 'category' });
}

四、验证

到这里为止,模型就全部改造完成了。我们添加个路由测试下,新建routes/posts.js

http://www.lryc.cn/news/508929.html

相关文章:

  • ArcGIS Pro 3.4新功能3:空间统计新特性,基于森林和增强分类与回归,过滤空间自相关
  • H3C MPLS跨域optionB
  • 源码分析之Openlayers中Geometry基类介绍
  • 《Vue3 三》Vue 中的 options 选项
  • Elasticsearch 国产化替代方案之一 Easysearch 的介绍与部署指南
  • Pytorch | 从零构建EfficientNet对CIFAR10进行分类
  • Python超能力:高级技巧让你的代码飞起来
  • 熊军出席ACDU·中国行南京站,详解SQL管理之道
  • FPGA实现MIPI转FPD-Link车载同轴视频传输方案,基于IMX327+FPD953架构,提供工程源码和技术支持
  • vue3动态绑定图片和使用阿里巴巴矢量图
  • ‘vite‘ 不是内部或外部命令,也不是可运行的程序
  • 2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码
  • 如何获取 ABAP 内表中的重复项
  • 编译笔记:vs 中 正在从以下位置***加载符号 C# 中捕获C/C++抛出的异常
  • ChatGPT与Postman协作完成接口测试(二)
  • flask-admin modelview 中重写get_query函数
  • 【python 逆向分析某有道翻译】分析有道翻译公开的密文内容,webpack类型,全程扣代码,最后实现接口调用翻译,仅供学习参考
  • tensorflow_probability与tensorflow版本依赖关系
  • 构建安全的用户认证系统:PHP实现
  • VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比
  • 天融信网络架构安全实践
  • 腾讯云云开发 Copilot具有以下优势
  • electron-vite【实战系列教程】
  • 【微信小程序】微信小程序中的异步函数是如何实现同步功能的
  • 贪心算法(三)
  • uniApp打包H5发布到服务器(docker)
  • 【AI落地应用实战】篡改检测技术前沿探索——从基于检测分割到大模型
  • 使用 VSCode 学习与实践 LaTeX:从插件安装到排版技巧
  • 使用scrapy框架爬取微博热搜榜
  • 瑞吉外卖项目学习笔记(七)新增菜品、(批量)删除菜品