Sequelize:或者父项where子句和子where子句之间的OR

我有2个模型:

const User = sequelize.define('User', { email: { type: DataTypes.STRING, }, password: { type: DataTypes.STRING, }, }); User.associate = (models) => { User.hasOne(models.Profile, { foreignKey: { name: 'user_id', }, }); }; const Profile = sequelize.define('Profile', { name: { type: DataTypes.STRING, }, avatar: { type: DataTypes.STRING, }, }, { tableName: 'profiles', freezeTableName: true, timestamps: false, }); Profile.associate = (models) => { Profile.belongsTo(models.User, { foreignKey: { name: 'user_id', }, }); }; 

我想让所有用户的电子邮件地址或名称符合一定的条件。 就像是:

 User .all({ where: { email: { $like: filter }, }, include: [{ model: Profile, where: { name: { $like: filter }, }, }], }) .then(users => res.status(200).send(users)) .catch(error => { return res.sendStatus(500); }); 

但它会返回user.email和profile.name与条件匹配的所有用户。 我想在2 where子句之间有OR。

可能吗?

注意:我使用Sequelize 4.0.0。

更新:如果有其他人与此斗争,解决scheme是:

 User .all({ where: { $or: { email: { $like: filter }, '$Profile.name$': { $like: filter } } }, include: [{ model: Profile, }], }) .then(users => res.status(200).send(users)) .catch(error => { return res.sendStatus(500); }); 

如果其他人正在寻找这个,这是我如何设法解决它:

 User .all({ where: { $or: { email: { $like: filter }, '$Profile.name$': { $like: filter } } }, include: [{ model: Profile, }], }) .then(users => res.status(200).send(users)) .catch(error => { return res.sendStatus(500); }); 

感谢@Ninja编码确认解决scheme。