使用Sequelize实现文章和评论的一对多关系并实现评论的按时间排序

本文介绍了如何使用Sequelize在文章(Article)和评论(Comment)之间建立一对多关系,并展示了如何通过代码获取并按时间排序文章的评论。在数据库中,评论表新增了articleId字段作为关联,文章表则在获取时包含了comments属性,包含评论数组。在后台和前端,都可以获取到文章及其对应的评论进行展示。
摘要由CSDN通过智能技术生成

其实关于一对多怎么写我找了很多相关的资料,但是要么就是翻译的,要么就是照搬别人文章的。因此我在这里将自己写的代码记录在这里,希望能帮到有需要的人。

首先文章可以有多个评论,所以显然文章跟评论是一对多的关系。所以第一步,我们需要确定文章这个model和评论这个model两者之间的关系。

先贴上两个model

Article

Comment

定义好两张表后,使用下面的代码,

hasMany表示Article有很多个Comment,说明Article是一对多的一,

belongsTo表示Comment属于Article,说明Comment是一对多的多。

那么很多文章其实到这里就结束了,并没有说要怎么使用,所以这里我展示一下这两行代码执行之后到底发生了什么。

首先,我们要知道Comment这个Model只有4个字段,而我们在数据库中却看到如下的情况

Sequelize是一个Node.js ORM(Object-Relational Mapping)库,可以用于操作多种关系型数据库,包括MySQL。下面是使用Sequelize实现对MySQL数据库的操作的步骤: 1. 安装Sequelize和MySQL驱动程序: ``` npm install sequelize mysql2 ``` 2. 创建Sequelize实例: ``` const Sequelize = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql' }); ``` 其中,'database'是数据库名称,'username'和'password'是MySQL登录用户名和密码,'localhost'是MySQL数据库服务器地址,'mysql'是数据库类型。 3. 定义模型: ``` const { Model, DataTypes } = require('sequelize'); class User extends Model {} User.init({ // 在这里定义模型属性 firstName: { type: DataTypes.STRING, allowNull: false }, lastName: { type: DataTypes.STRING // allowNull 默认为 true } }, { sequelize, modelName: 'user' // 参数 }); ``` 其中,User是模型名称,'user'是表名,这里定义了两个属性:firstName和lastName,都是字符串类型,firstName不能为空。还可以定义其它属性,如主键、自增、唯一等。 4. 同步模型: ``` await sequelize.sync(); ``` 可以使用sync方法同步模型到数据库中,也可以使用force参数强制重新创建表。 5. 创建数据: ``` const jane = await User.create({ firstName: "Jane", lastName: "Doe" }); console.log(jane.toJSON()); ``` 使用create方法创建一条数据,返回的是一个Promise对象,可以使用toJSON方法将数据转换为JSON格式。 6. 查询数据: ``` const users = await User.findAll(); console.log(users.map(u => u.toJSON())); ``` 使用findAll方法查询所有数据,返回的是一个Promise对象,可以使用map方法将数据转换为JSON格式。 7. 更新数据: ``` await jane.update({ firstName: "Janet" }); ``` 使用update方法更新数据,返回的是一个Promise对象。 8. 删除数据: ``` await jane.destroy(); ``` 使用destroy方法删除数据,返回的是一个Promise对象。 以上就是使用Sequelize实现对MySQL数据库的操作的基本步骤。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值