2
我有2种型号之间:Sequelize:或父母where子句和孩子where子句
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。
更新: 在这个别人斗争的情况下,解决办法是:
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);
});
非常感谢您,我一直在寻找这个问题,请回答您自己的问题并将其标记为解决方案,因为这是解决方案。 –