写服务端的新手,我们项目用nodejs写服务端,框架是egg.js。对于简单的 增、删、改、查 新手的我也是快速上手了,但是当我遇到需要关联其他表查询时,我就懵逼了,不知道怎么关联啊。几经周折,总算搞明白了,特此记录一下~~~
实现:通过 fdc_vd_user_his 表关联外键,查询 fdc_vd_user_page 表及 fdc_pro_user_project 表
fdc_vd_user_page
fdc_pro_user_project
fdc_vd_user_his
'use strict'; // 个人操作历史表 module.exports = app => { const { STRING, INTEGER, DATE, TEXT } = app.Sequelize; const FdcVdUserHis = app.model.define('fdc_vd_user_his', { id: { type: INTEGER(11), primaryKey: true, autoIncrement: true, }, page_name: STRING(20), // 页面名称 page_id: INTEGER(11), // 页面id pro_id: INTEGER(11), // 项目id create_user: STRING(64), // 创建用户 create_time: DATE, // 创建时间 page_json: TEXT, // 页面内容 }); /* 关联表 foreignKey:当前表通过哪个键关联另一张表 targetKey:当前表的foreignKey关联另一张表的哪个键, 如果targetKey是表的主键,可以省略 as: 别名 */ FdcVdUserHis.associate = function() { app.model.FdcVd.FdcVdUserHis.belongsTo(app.model.FdcVd.FdcVdUserPage, { foreignKey: 'page_id', targetKey: 'id', as: 'userPage', }); app.model.FdcVd.FdcVdUserHis.belongsTo(app.model.FdcProUserProject, { foreignKey: 'pro_id', as: 'project', // }); }; return FdcVdUserHis;查询结果:
查询结果:
查询结果:
查询条件,注:如果给include 表加where条件 须使用 '$project.pro_en_name$' 这种写法;也可在include加where条件
例如:下面的searchCondition就是传入到上面查询where的条件