我有2个模特
用户
module.exports = function (sequelize, DataTypes) {
var User = sequelize.define('User', {
email: {
type: DataTypes.STRING,
validate: {
isEmail: true
}
}
}, {
classMethods: {
associate: function (models) {
User.hasMany(models.User, {as: 'Friends', through: models.Friendship});
}
},
updatedAt: false
});
return User;};
友谊
module.exports = function (sequelize, DataTypes) {
var Friendship = sequelize.define('Friendship', {
accepted: {
type: DataTypes.BOOLEAN,
defaultValue: false,
allowNull: false
}
}, {
});
return Friendship;};
如您所见,用户有很多用户作为朋友,这会创建下表:
**Friends**
PK user_id
PK friends_id
accepted
现在我的用户Bob的ID为1,用户Alice的ID为2。
如果我这样做
bob.addFriend(alice);
在Friends表中创建以下行
user_id = 1
friends_id = 2
accepted = false
但是当我做的时候
alice.hasFriend(bob);
我错了,因为没有行(user_id = 2&& friends_id = 1)。
我如何创建友谊之间的友谊,以便我可以与Bob成为朋友,但Alice必须确认他们确实是朋友?
我可以有两行接受状态,如:(1,2,true)和(2,1,false),当Bob与Alice交朋友时,但我不知道如何显示Bobs朋友? Bob与Alice成为朋友,这并不意味着她接受了他的朋友请求。对于每个鲍勃的朋友,我都要检查另一方(即X接受鲍勃的友谊),以确保鲍勃和X确实是朋友。
感谢。
答案 0 :(得分:0)
您可以使用自己的逻辑覆盖方法void main()
hasFriend