sequelizejs怎么关联两个表的信息
1个回答
2016-09-05 · 知道合伙人互联网行家
护肤达人IT宅族
知道合伙人互联网行家
向TA提问 私信TA
知道合伙人互联网行家
采纳数:5637
获赞数:17441
毕业于曲阜师范大学,学士学位。互联网行业2年从业经验,读过SEO相关书籍。现任爱家网SEO优化专员。
向TA提问 私信TA
关注
展开全部
使用sequelize能够较为方便的按照MVC模式组织nodejs程序后端架构。这篇文章,就笔者认为,其中较为有用且稍有难度的association进行分享。
通常,模型之间共有三种关系,1:1,1:n,n:m。以下举例逐个击破。
1:1.假如有user和userinfo俩个模型,分别对应用户,以及用户的资料。此时,每个用户应当有且只有一个用户资料,由此,user与uerinfo的关系应当为1:1.在sequelize中,使用hasOne与belongsTo进行描述。在实际的模型中
1 // in User model
2 associate: function(models){
3 User. hasOne(models.UserInfo);
4 }
5 //in UserInfo model
6 associate: function(models){
7 UserInfo.belongsTo(models.User);
8 }
上边这段代码中,讲的就是,一个User有一个UserInfo,一个UserInfo反过来属于一个User。由此双方关系确立。运行代码后,sequelize会自动在UserInfo中增加一个外键UserId.在搜索的时候如果需要获取UserInfo,可以使用下面俩种方式:
1 models.User.findOne({
2 where:{ id: userid },
3 include: {model: models.UserInfo, as: 'Info'}
4 }).then(function(user){
5 /*{
6 name: 'xxx',
7 UserInfo: {
8 email: 'xxx'
9 }
通常,模型之间共有三种关系,1:1,1:n,n:m。以下举例逐个击破。
1:1.假如有user和userinfo俩个模型,分别对应用户,以及用户的资料。此时,每个用户应当有且只有一个用户资料,由此,user与uerinfo的关系应当为1:1.在sequelize中,使用hasOne与belongsTo进行描述。在实际的模型中
1 // in User model
2 associate: function(models){
3 User. hasOne(models.UserInfo);
4 }
5 //in UserInfo model
6 associate: function(models){
7 UserInfo.belongsTo(models.User);
8 }
上边这段代码中,讲的就是,一个User有一个UserInfo,一个UserInfo反过来属于一个User。由此双方关系确立。运行代码后,sequelize会自动在UserInfo中增加一个外键UserId.在搜索的时候如果需要获取UserInfo,可以使用下面俩种方式:
1 models.User.findOne({
2 where:{ id: userid },
3 include: {model: models.UserInfo, as: 'Info'}
4 }).then(function(user){
5 /*{
6 name: 'xxx',
7 UserInfo: {
8 email: 'xxx'
9 }
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询