Sequelize.js在2个用户之间建立友谊

时间:2014-04-04 16:14:55

标签: mysql sequelize.js

我有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确实是朋友。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用自己的逻辑覆盖方法void main()

hasFriend
相关问题