曾经在文档中挖掘了一段时间,找不到此选项。
场景:
User.belongsToMany(User, {
as: 'following',
through: 'follows',
foreignKey: 'follower_id',
otherKey: 'followed_id',
// disableSameId: true <--- the kind of option I'm looking for
});
在此场景中,我正在寻找的行为是禁止用户跟随自己。
当前,我的实现很明显,在发出请求之前检查了id1 !== id2
,但仍然想知道这种可能的根快捷方式
有人知道吗?
答案 0 :(得分:0)
找到了令我满意的解决方案:
搜索使我here带领我为此rel-table
创建了一个模型
使用自定义validator
可以达到目的。
return sequelize.define('Follows',
{},
{
timestamps: true,
paranoid: false,
underscored: true,
freezeTableName: true,
tableName: 'follows',
validate: {
IdsShouldNotMatch() {
compare(this, 'Cannot follow yourself');
}
}
});
// model_helpers/compare.js
module.exports = (that, error) => {
let condition = Object.values(that.dataValues)
.map(v => Number(v))
.reduce((a, b) => a - b);
if (!condition) {
throw new Error(error);
}
};