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);
});
非常感謝您,我一直在尋找這個問題,請回答您自己的問題並將其標記爲解決方案,因爲這是解決方案。 –