Sequelize:仅包括协会IF

时间:2018-03-13 15:30:50

标签: node.js express sequelize.js

我正在使用nodejs v8.9.0 + expressjs v4.14.0 + sequelize v3.25.0构建一个人们可以发布文章的Web应用程序。

我有这些模型

/** ARTICLE MODEL **/
module.exports = function(sequelize, DataTypes) {
var Article = sequelize.define('articles', {
    title: {
        type: DataTypes.STRING(255),
        field: 'title' 
    },
    content: {
        type: DataTypes.TEXT,
        field: 'content' 
    }
    anonymous: {
        type: DataTypes.BOOLEAN,
        field: 'anonymous' 
    }
},
{
    classMethods: {
        Article .belongsTo(
            models.users, 
            {
                foreignKey: 'userId'
            }
        );
    }
})

/** USER MODEL **/
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('users', {
    firstName: {
        type: DataTypes.STRING(50),
        field: 'firstName' 
    },
    lastName: {
        type: DataTypes.STRING(200),
        field: 'lastName' 
    },
    email: {
        type: DataTypes.STRING(200),
        field: 'email'
    },
},
{
    classMethods: {}
})

用户可以匿名发布文章

现在,当我查询文章列表时,我想仅在匿名为假时才包含用户模型。

怎么做?

1 个答案:

答案 0 :(得分:1)

不是那么优雅的解决方案,但是工作:

 Article.findAll({
      include: [{
        model: User,
        required: false,
        where: sequelize.where(sequelize.literal('anonymous'), false)
      }],
    })