3
之間的友誼我有2種型號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
現在我有用戶鮑勃ID爲1,用戶Alice用ID 2.
如果我做
bob.addFriend(alice);
它創建在朋友表中的下列行
user_id = 1
friends_id = 2
accepted = false
但當我做
alice.hasFriend(bob);
我因爲沒有行(user_id = 2 & & friends_id = 1)而變得錯誤。
我如何創建一個像用戶之間的關係這樣的友誼,所以我可以和Bob結交朋友Alice,但是Alice必須證實他們確實是朋友?
當Bob與朋友Alice交朋友時,我可以擁有兩行接受的狀態,如:(1,2,true)和(2,1,false),但我不知道如何顯示Bobs朋友?鮑勃與愛麗絲結識的事實並不意味着她接受了他的朋友請求。對於每個鮑勃的朋友,我都要檢查對方(即X接受了鮑勃的友誼),以確保鮑勃和X確實是朋友。
謝謝。
你對一般的2行或者你只是不想創建數據集在自己的每一次?我仍在考慮這種行爲。如果這是一個錯誤或意圖,我不能100%確定。 – sdepold
@sdepold感謝您的幫助!我已經更新了問題的最後一段。我只是不知道如何創建與「等待」狀態的友誼關係,即,如果Bob向Alice發送好友請求,Alice需要確認他們是好友,但由於alice.hasFriend(bob)返回false,所以我卡住。如果沒有ORM,我會爲alice實現hasFriends作爲與其中(user_id = bob.id和friends_id = alice.id)或(user_id = alice.id和friends_id = bob.id)的JOIN,這將覆蓋雙方並給出所有場景愛麗絲開始了友誼,愛麗絲結識了朋友。 –
不,我不認爲它是一個錯誤。這些關聯正常工作,它只是一個缺失的功能/功能。 –