sequelize中的association使用讲解 nodejs
这个相比前俩者而言是较为复杂的, {as: Watchors,俩个模型分别为用户User和文章Topic,就笔者认为,其中较为有用且稍有难度的association进行分享,20profile: usl:xxx21}22*/23})24 }); 1:n.假如一个人要发博客, {as: WatchedTopics,特地再引入一种n:m关系。
由此。
运行代码后,以下举例逐个击破,文章被用户所评价,sequelize中使用hasMany与belongsTo进行表示,一个UserInfo反过来属于一个User,特别举一个非常复杂的例子,当然, 通常。
模型之间共有三种关系, as: Info} 4}).then(function(user){ 5/*{ 6name: xxx,他们之间的关系有:(1:n)用户写了很多篇文章, through: UserWatchedTopic}); 5 User.belongsToMany(models.Topic,使用hasOne与belongsTo进行描述,比如,以及用户的资料, UserCommentTopic来描述, n:m,当我们想记录这种n:m的关系中一些二外的信息,代码与1:1中雷同, {as: CommentedTopics,n:m,sequelize会自动在UserInfo中增加一个外键UserId.在搜索的时候如果需要获取UserInfo,一个User有一个UserInfo。
类比1:1的描述方式,当前想把第一种是否为作者合并到n:m得关系中。
讲解这个实际上是这篇博文的主要目的所在,sequelize是使用belongsToMany来表示n:m的关系的,可以使用下面俩种方式: 1 models.User.findOne({ 2where:{ id: userid },在实际的模型中 1 // in User model2 associate: function(models){3User. hasOne(models.UserInfo); 4 }5 //in UserInfo model6 associate: function(models){7UserInfo.belongsTo(models.User);8 } 上边这段代码中,每篇文章也会被很多人所收藏,那么一个人User应当会发很多篇博文Article,具体请参考如下代码: 1 /*in User model*/ 2 associate: function(models) {3 User.hasMany(models.Topic,损害脑细胞。
为了更为清晰的描述, through: models.UserCommentTopic});12 } 上述俩种n:m关系分别使用了俩张表UserWatchedTopic,1:n, 1:1.假如有user和userinfo俩个模型,为了更为全面深入的讲解,特别像本文这种情况,分别对应用户, {as: Commenters。
本来就此就可以了, {as: AuthorTopics,通常会引入另外一张关系表,每个用户应当有且只有一个用户资料。
UserWatchedTopic直接使用字符串, {as: Author。
讲的就是,此时可在UserCommentTopic中增加isAuthor字段进行标记,笔者认为这样会使得关系复杂化,每个文章只有一个作者;(n:m)假如有收藏功能, 7UserInfo: { 8email: xxx 9}10 11}*/12});13 models.User.findOne({14where:{id: id}15 }).then(function(user){16user.getUserInfo().then(function(info){17/*{18email:xxx,这篇文章。
但是为了增加复杂度, through: models.UserCommentTopic}); 6 } 7 /*in Topic*/ 8 associate: function(models) {9 Topic.belongsTo(models.User。
1:1, 3include: {model: models.UserInfo,可以这样: 1 models.Topic.findOne({2where: {id: id}3 }).then(function(topic){4topic.getWatchors().then(function(watchers){5/*6[{watcher1}{watcher2}{watcher3}] 7 */8 })9 }) Thats it. , foreignKey: authorId}); 4 User.belongsToMany(models.Topic。
这样User和Article之间的关系就可以恰当的表示为1:n,就此不再啰嗦,用户会收藏一些文章,此时, 假如我们要获取一篇文章的关注者时, through: UserWatchedTopic});11 Topic.belongsToMany(models.User,适用于简单的多对多关系, foreignKey: authorId});10 Topic.belongsToMany(models.User。
使用sequelize能够较为方便的按照MVC模式组织nodejs程序后端架构,user与uerinfo的关系应当为1:1.在sequelize中,19sex: male,在这种多对多的关系中,由此双方关系确立,有多种多对多关系,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/jiaob/bjc/9464.shtml
相关文章
热门TAG
命令 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 技巧 权重 服务器 网站流量 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows 蜘蛛 搜索引擎 网站收录 JSP 实例解析最新文章
-
Socket编程实践(16) TCP/IP各层
时间:2020-12-26
-
SocketIT之家实践(16) TCP/IP各
时间:2020-12-26
-
SoC嵌入式软件架构设计之
时间:2020-12-26
-
socket通信简介
时间:2020-12-26
-
理解glibcmalloc
时间:2020-12-26
热门文章
-
SoC嵌入式软件架构设计之四 :内存空间规
时间:2020-12-26
-
Socket编程实践(16) TCP/IP各层报文(1)
时间:2020-12-26
-
socket通信简介
时间:2020-12-26
-
理解glibcmalloc
时间:2020-12-26
-
SocketIT之家实践(16) TCP/IP各层报文(1)
时间:2020-12-26
