递归查询,本身实现上和Sequelize
没有太大的关系,但是这里还是作为单独一讲,主要是日常项目中遇到的也非常多。
案例:多层级菜单
菜单表,通过id
和pid
,知道每个菜单父级id
是谁,这样就形成了递归,一层一层寻找,只到没有没有为止。
举例:
(1)第一次找pid=0
的菜单,这样就返回了所有最高级的父级
(2)第二次,根据第一次的结果id
,找到他们下属的一级菜单
...
新建 db/model/menu.js
,配置如下:
/**
* 菜单表
*/
var Sequelize = require('sequelize');
var {sequelize} = require('../sequelize.js');
var menu = sequelize.define('menu',{
id: {
type: Sequelize.BIGINT(20),
primaryKey: true,
allowNull: false,
unique: true,
autoIncrement: true
},
pid: Sequelize.STRING(20), // 父级
name: Sequelize.STRING(255), // 名字
create_time: Sequelize.DATE,
update_time: Sequelize.DATE
},{
timestamps: false, // 不要默认时间戳 数据库没有时间戳字段时,设置为false,否则报错 SequelizeDatabaseError: Unknown column 'createdAt' in 'field list'
freezeTableName: true
});
module.exports = menu;
更多精彩内容,可以点击“立即支付”,查看隐藏内容哦!
本文由 Web秀 作者:Javan 发表,转载请注明来源!