前言不知道为什么sequelize没火起来。有一次在MOOC上看到一个关于sequelize的视频。中间遇到了很多坑,但最终还是做到了。下面的项目是一个简单的微博评论功能(没有分页功能),但是还有一些细节需要优化。弹窗细节我们先从上图中的主页面开始界面场景就是上面的场景,那么直接进入正题,我们来看看数据库表之间的关系。我在数据库中创建了三张表,分别是问题表Questions,评论回复人表Consumers,评论回复人表Comment,那我们就一一介绍一下每张表,看看字段问题表评论回复人表(每个问题或回复会根据当前登录人在表中创建一个用户名)评论回复表该表设置pid和replyid,其中pid用于分层显示(一级评论,二级评论),以及replyid表示回复项。如果直接评论文章,pid和replyid都是0。如果直接回复一级评论,那么pid和replyid就是一级评论的id。如果你是在楼里回复楼,那么pid就是一级评论的id,replyid就是你回复的id。数据库的初始化1.创建数据库(这里我们创建了一个todo_development)2.使用'sequelizecli'初始化项目的数据库配置信息。创建一个db文件夹(mkdirdb),进入该文件夹执行npxsequelizeinit3。添加"timezone":"+08:00"//中国时间4到配置。修改config中的数据库,对应我们的todo_development数据库名5.生成模型文件,比如创建一个问题表,进行如下操作(另外两张表都是这样创建的)npxsequelizemodel:generate--name问题--attributestitle:string,createTime:date,content:string6.持久化,模型对应的【数据库表】,然后打开Navicat会多出一个问题表npxsequelizedb:migrate7.这里我们会自动生成两个字段(creationtime和modificationTime)我们不需要在migrate中删除,然后给models加上时间戳:falsedefinetablerelationship在上表中,我们还看到在创建评论表(Comments)时,多创建了一个QuestionId来关联对应的问题。在models中添加如下代码(图1)连接Questions表,question表也需要包含在comment表中。这里,一个问题可以包含多个评论,所以我们在图1和图2中使用了hasMany(图2),提问的人只能有一个,所以问题表只关联一个用户。使用hasOne(图1),评论的人也只是评论的相对用户,所以也使用hasOne图1图2评论回复人表只需要连接评论表和问题表,这样关系在我们的三个表都定义好了。
