美文网首页
Sequelize 的scope

Sequelize 的scope

作者: RoyChina | 来源:发表于2019-04-22 23:04 被阅读0次

文章转载自:https://www.jianshu.com/p/8242b841de9d

Scope: 定义好scope在后续的操作中可以减少条件的重复,如只选择未删除用户。

跟模型相关的地方都可以添加

// 修改默认所有操作的scope [defaultScope]
var Project = sequelize.define( 'project', {
    // Attributes
}, {
    defaultScope: {
        where: {
            active: true
        }
    },
    scopes: {
        deleted: {
            where: {
                deleted: true
            }
        },
        activeUsers: {
            include: [
                { model: User, where: { active: true } }
      ]
        }
    }
} );

// 查询所有active: true的Project
Project.findAll();
// 移除默认scope,设置为 deleted scope
Project.scope( 'deleted' ).findAll();

// 与上面等价
var DeletedProjects = Project.scope( 'deleted' );
DeletedProjects.findAll();

var Post = sequelize.define( 'post', attributes, {
    defaultScope: {
        where: {
            active: true
        }
    },
    scopes: {
        deleted: {
            where: {
                deleted: true
            }
        }
    }
} );

设置联系时,加入scope

User.hasMany( Post ); // regular getPosts association
User.hasMany( Post.scope( 'deleted' ), { as: 'deletedPosts' } );

相关文章

网友评论

      本文标题:Sequelize 的scope

      本文链接:https://www.haomeiwen.com/subject/osmpgqtx.html